socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空
服务端在ubuntu服务器下,客户端在windows下,采用socket进行通信,在客户端接收数据时,出现了诡异的情况,recv返回值大于0,但缓冲区大小为0,代码如下:
char buff[10];
int res=recv(ClientSocket, buff, 10, 0);
cout << res << endl;//返回8,表示有接收到数据
cout << strlen(buff) << endl;//返回0
采用wireshark进行抓包,查看tcp流选项,显示确实有数据
发现前面有一大堆的空格,后查看服务端代码,有补充0的情况,导致在用strlen计算缓冲区长度时出现问题(把0当成\0了?具体的也没搞太明白),只为记录下这诡异的情况。
可能传的是空值,后来把空值也算上。