2017-02-21 29 views
-1

Доброе утро,Неправильный прием данных с UDP сокет (C++)

мне нужно установить UDP соединение, чтобы отправить некоторые данные от клиента к серверу. Я внедрил начальную форму соединения example.

Тогда я определил мой client.cc класс:

#include <iostream> 
#include <string.h> 
#include <stdio.h> 
#include "udp_client_server.h" 
#include "prova.h" 

using udp_client_server::udp_client; 

#define LDM_IP "127.0.0.1" 
#define LDM_PORT 5445  //8000 

using namespace std; 

int main() { 
    cout << "!!!I'm a client!!!" << endl; 

    prova *ciao = new prova() ; 
    ciao->a = 86; 
    ciao->b = 8.1; 
    ciao->c = 90; 

    udp_client_server::udp_client *client = new udp_client(LDM_IP, LDM_PORT); 

    int b = client->send((char *)ciao,strlen((char *)ciao)); 

    if (b != strlen((char *)ciao)){ 
     std::cout<<"Packet corrupted "<< std::endl; 
    } 

    return 0; 
} 

Тогда sender.cc класс:

#include <iostream> 
#include <string.h> 

#include "udp_client_server.h" 
#include "prova.h" 

using udp_client_server::udp_server; 

#define LDM_IP "127.0.0.1" 
#define LDM_PORT 5445  //8000 

using namespace std; 

int main() { 
    cout << "!!!I'm a server!!!" << endl; 

    int size_max = 256; 

    udp_client_server::udp_server *server = new udp_server(LDM_IP, LDM_PORT); 

    char *buffer; 
    int gotMsg = server->recv(buffer,size_max); 
    prova *pippo = new prova(); 
    pippo = (prova *)(buffer); 

    std::cout<< "result " << gotMsg <<std::endl; 
    std::cout<< "value " << pippo <<std::endl; 

    return 0; 
} 

Соединение установить, но я не получаю то, что я посылаю. При каждом запуске я получаю другое неправильное значение вместо переданного.

Может ли кто-нибудь сказать мне, где ошибка? Заранее спасибо

+0

Нет такой вещи, как UDP-соединение. – EJP

+0

@EJP, что вы имеете в виду? – moi

ответ

1

посыл (....., STRLEN ((символ *) чао) оленья кожа отправить класс

изменить код, структурные переменные посыла.

попробовать посыла (. .... размерof (prova))

+0

Это работает! – moi