2017-02-21 117 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的((字符*)的Ciao) 犯規送類

改變你的代碼, 發送結構變量。

嘗試 發送(。 .... sizeof(prova));

+0

它的工作!非常好 – moi