2017-02-21 18 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を((char型*)CIAO) は、クラス

変更してコード 送信構造体変数を送信doesntの。事前に おかげ

が 送信を(してみてください。 .... sizeof(prova));

+0

非常に良い – moi

関連する問題