socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空

举报
风吹稻花香 发表于 2021/06/04 23:32:59 2021/06/04
【摘要】   socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空   服务端在ubuntu服务器下,客户端在windows下,采用socket进行通信,在客户端接收数据时,出现了诡异的情况,recv返回值大于0,但缓冲区大小为0,代码如下: char buff[10]; int res=recv(ClientSocket, bu...

 

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了?具体的也没搞太明白),只为记录下这诡异的情况。

 

可能传的是空值,后来把空值也算上。

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/89477214

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。