winsock 接收图片数据不全,图片生成之后少一块
在做个接受图片的程序,老发现有的时候数据包不能全部收到,我是通过二进制传输的,想问一下是什么原因
还有数据收的时候还是按照发送的顺序的吧,因为老是接收不到表示结束的标识,TCP应该是不掉包的吧
[解决办法]
根据通讯协议可能需要将一份数据分成多个包发送,所以会有多次数据到达的消息,你需要把多次收到的数据拼接起来。
[解决办法]
需要有校验和接收成功标志,不成功,重发。
网络的稳定性好吗?你用的是什么网?
[解决办法]
检查一下发送的代码,确认发送的数据是完整的。
[解决办法]
TCP/IP是基于流的协议!啥叫基于流?
就是你SendData三次分别为aaaa、bbbb、cccc
你可能_DataArrival两次,GetData分别得到aaaab、bbbcccc
[解决办法]
建议你人工分包,4K一包,每包发间做一定延时,否则到了互联网问题可能会更多。
[解决办法]
DataArrival 事件中的bytesTotal参数是每次包字节的大小,定义一个字节型的数组,将数组初始化为(0 To DataArrival)大小,然后将数据接收到本数组里,应该没问题的
[解决办法]
可能还是需要检查发送和接收处理。我们每天看多少网上图片,不会总遇到图片缺损吧?
[解决办法]
发送与发送之间要有延时