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,所以这不仅仅是一次性的事情。

4

0 回答 0