发现接收到的数据会 把00截取掉,如服务端发送十六进制的“30 31 32 33 00 34 35”,这边接收到的数据只有“30 31 32 33 ”这个了,不知道什么原因,请教高手!
========================================================================
抓包看一下协议是否完整,如果完整就从recv的buf等找原因;如果不完整,则从另一端的send找原因。
从send找原因吧,应该是调用send的时候,传入了错误的数据长度导致的。
发送的时候,用了strlen()吧。这个遇到00就会停止继续读取字符串。
你看一下send的返回值,再看一下recv的返回值,比较一下两者是否相等,这有socket例子,你找一个试试:
http://download.youkuaiyun.com/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.youkuaiyun.com/topics/390467376?page=1#post-394578224