连接之后,服务端可以对客户端主机文件进行浏览、下载、上传,用TCP。
程序中很多时候需要连续地send数据,这个时候,就需要确定收发数据的完整性,这时就会出现问题。
比如我做下面的动作:
1、服务端发送命令给客户端要求返回客户端的硬盘分区信息
2、客户端列举本机的各个分区,每列举一个就把相应信息send给服务端
3、服务端每接一条分区信息就显示一条
我分别用了非阻塞异步IO模型和重叠IO模型,都是在本机测试正常,而把服务端和客户端分别在两个网段上运行就会发生服务端显示信息不完整的现象。
求高手给予解决。
just ftp!!!
要自己订立协议来保证完整性,如一个消息头是什么,长度放哪里,其他信息,消息正文,消息尾为什么,校验码?等等。
服务端显示信息不完整是因为发送或接收的处理方法不正确。
TCP是可靠的,而代码是不可靠的,所以你要查查你是如何收发数据的。
首先你要自己定义应用层消息头,可以完整表示一个消息是什么样的,有多长。
另外发送要保证数据全部都投递进了系统发送缓冲区,接收要保证把系统缓冲区数据收完,解析要保证一次收到多个包能准确分开,一次收到不足一个包能和下次接收的数据合并。
如果你做到了,就不会有问题。