我正在编写一些客户端代码,它将连接到服务器并向其发出 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,所以这不仅仅是一次性的事情。