问题描述:
1.客户端用idTcpClient 服务端是IOCP 当客户端用一个链路传输多文件过程中,有的文件只能传一半,有的可以 传完. 当客户端使用多个链路时(一个文件一个链路)时是可以全部传完的.2.客户端用idTcpClient 服务端是idTcpServer 一个链路传多文件是可以全部完成的.根据以上原因,帮分析一下这是啥原因..分不够再给..谢谢..
1.客户端用idTcpClient 服务端是IOCP 当客户端用一个链路传输多文件过程中,有的文件只能传一半,有的可以 传完. 当客户端使用多个链路时(一个文件一个链路)时是可以全部传完的.2.客户端用idTcpClient 服务端是idTcpServer 一个链路传多文件是可以全部完成的.根据以上原因,帮分析一下这是啥原因..分不够再给..谢谢..
网络传输需要考虑的因素他多了,建议:1、包要自己拆分和组装;2、每个包的大小最好在1350字节以内(网络设备的一个参数限制);TCP协议是能够自己拆分大包,但是有时候网络环境复杂的话拆分的包可能走不同的网络路由,导致接收
某一个小包的时候超时
可以用tracert 跟踪一下看看路由情况在发送接收的时候要考虑socket buffer的大小是否修改成合适的大小了
标识派到相应的文件线程(数据包传到文件线程时会把SOCKET传进去),文件线程处理好后,进行发送下一包。
在这里面虽说每个文件一个线程,但是TCP只有一个接收线程,而且是接一个包处理一个包。这样分析下去,最终发送时不会存在并发发送。今天在TCP的接收线程中,在处理完一个包以后加了一句sleep(0).加上去以后已经
正常,目前还在观察中..请各位朋友继续分析一下.另外我想把接收缓存再加大一点.目前是用的默认的8K吧.
这样接收缓存中的数据后一半会没处理...真是郁闷啊..查了这么久..不过最终还是解决了,目前正在观察中.再次感谢各位朋友的支持.
散分...