提问者: by语言, > 最近在研究Hp-Socket Pull模式收发文件,之前在论坛中看到有人说大文件传输推荐Pull,效率高于PACK。但是有个疑问,还望用过的前辈指教: 以下两种方式哪个合理一些: 客户端按把文件拆成若干个包 ``` 方案1: ----->连续发送给服务端----->服务端连续收包组包----->循环 方案2: ----->发送包1给服务端----->服务端收到包1并开始组包------>告诉客户端继续发送包2----->循环 ``` 其实`方案1`可以看成`异步`,`方案2`是`同步`。 请问如果用`方案1`的话,会不会包10比包1先到,服务端收到的包的顺序如何保障,Hp-Socket在底层有没有做处理? `方案2`的话,保证了包序,但是效率上肯定不如包1。 目前在这方面研究的不深,希望有经验的前辈点拨一下,感谢!!! 先锋小七: > 你可以尝试两种方案在同一外网环境下发送同一文件,期间使用wireshark抓包来分析。 > 值得注意的是包的大小最好别超过32k 流云思水: > 除非是不同用户才会出现延迟状态,但单个用户发包,不会B比A早到 4566704: > 如果我没理解错的话,你说的包1是指应用层的发送一次吧。 > 1.串行发送模式,包都是按顺序发送的 > 2.只有开启并行发送,包序才会乱,易语言就别开并行发送了,组包算法明显没VC高 > 3.可以把方案2看成,切片传输,用于大文件传输,断点续传等,还可以提高win32服务端带机量 4566704: > 切片是把一个大文件,分成若干个小文件进行多次发送。 > 比如把5G的视频文件,分割成256k,进行发送,就算中途断掉,也不会白传,重连后继续传剩下的就可以了。 > 没人会单次发送很大的文件。