socket 网络接收数据问题(0X00问题)

socket 网络接收数据问题(0X00问题)在用vc++6.0中做网络通讯时,用 recv(  SOCKET s,  char* buf,  int len,  int flags);发现接收到的数据会 把00截取掉,如服务端发送十六进制的“30 31 32 33 00 34 35”,这边接收到的数据只有“30 31 32 33 ”这个了,不知道什么原因,请教高手!==============================

大家好,欢迎来到IT知识分享网。socket 网络接收数据问题(0X00问题)在用vc++6.0中做网络通讯时,用 recv(  SOCKET s,  char* buf,  int len,  int flags);

发现接收到的数据会 把00截取掉,如服务端发送十六进制的“30 31 32 33 00 34 35”,这边接收到的数据只有“30 31 32 33 ”这个了,不知道什么原因,请教高手!


========================================================================

抓包看一下协议是否完整,如果完整就从recv的buf等找原因;如果不完整,则从另一端的send找原因。

从send找原因吧,应该是调用send的时候,传入了错误的数据长度导致的。

发送的时候,用了strlen()吧。这个遇到00就会停止继续读取字符串。


你看一下send的返回值,再看一下recv的返回值,比较一下两者是否相等,这有socket例子,你找一个试试:
http://download.csdn.net/detail/geoff08zhang/4571358


明显是字符串传输的时候遇到0了,自动截断。。3楼应该正确的


发送应该没问题,我用测试工具发送的,测试工具接收都正常,有socket接收就会自动把00截断!


char * buf;
int bytesRead = recv(s, buf, bufSize, 0);
我这样接收的是不是有问题,buf自动把00后的截取掉了!


recv(sockConn,recvBuf,100,0);
printf(“%s\n”,recvBuf);

printf显示字符串当然是到0x00结束了。


strlen也是已0x00结束的;



详解:

http://bbs.csdn.net/topics/390467376?page=1#post-394578224

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12021.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信