0

私は、サーバーに接続して ID (「16 バイト文字列」) を発行するクライアント コードを作成しています。その代わりに、同じ 16 バイト文字列が返されます。また、このサーバーから、ID であるという一方的なリクエストを受け取ることもあり、同じものを彼にも送り返す必要があります。

文字列を作成して送信すると、取得した返信を完全に解析して印刷できるため、正常に機能し、送信したものとまったく同じです。ただし、一方的な要求の部分については、送信された文字列を読み取ることができません。

これが私のコードの一部です..

 string my_send_string  = "123" ; 
 char my_send_buffer[16] ; 
 char my_reply[256] ; 
 memset(my_send_buffer,'\0', 16) ; 
 strncpy(my_send_buffer,my_send_string.c_str(),my_send_string.size()) ;
 numBytes = send(sock_fd,my_send_buffer,16,0); 
 // verified that numBytes is indeed 16 .. 
 numBytes = recv(sock_fd, my_reply, 16, 0) ; 
 // verified that numBytes recvd is indeed 16 .. 
 printf("Original Send Reply: %s\n",my_reply ); // This prints 123, as I expect. 
 memset(my_reply,'\0', 16) ; 
 numBytes = recv(sock_fd, my_reply, 16, 0) ; 
 // verified that numBytes is 16. 
 printf("Unsolicited Request:%s\n",my_reply ); // This prints ?a?p??˝س?8?

 ....

ここで受信した文字列を間違ってエンコードしていると思います-これを修正する方法に関するヒントはありますか? 上記の例では、一度だけ送信しようとしましたが、異なる文字列 ID で文字列を 10 回送信すると、送信した ID が常に返されるため、1 回だけではありません。

4

0 に答える 0