zxq6 发表于 2021-6-8 16:55:44

tcp大数据传输过程中被中断应该如何处理呢?

如题,比如我从电脑向板子传输4G的数据,传输方式使用TCP。通常情况下tcp不需要考虑可靠性和顺序性。不过有些情况下需要进行处理。
如果在传输到1G的时候,tcp连接断了,那么两边再次连接起来的时候,是不是需要通过交互,告诉电脑从哪个地方开始断点续传?
那么刚刚断开的地方,板子收到的数据可靠性能保证正确吗?
还是说需要丢弃一部分,让电脑多往前传一点?
如果是的话,一般这种情况,丢弃多少是能够保证不出错的?
谢谢!

f1yh1347 发表于 2021-6-8 17:03:27

去看看http,断点续传功能就可以了

yuyu87 发表于 2021-6-8 17:12:24

传输一点,自己内部累加一个长度就好了,TCP可以包证收到的数据包是对的

zhw950 发表于 2021-6-8 18:56:48

把大数据分为多个小数据包,传完一包确认一下,发生中断,从中断之前的一包数据开始传

三世执戟 发表于 2021-6-8 19:10:11

请加上分片校验功能,不要相信任何人,包括你自己。

jasonzhu8888 发表于 2021-6-8 19:24:16

如果你用http协议,那么确保服务端支持断点续传,接收端需要做断点支持。如果是你自己直接基于tcp实现,那么接收到数据缓存块写入文件之后,文件长度上能知道你已经接收了多少。下次向服务器发请求,从某个位置开始就行。也就稍微复杂一些。

norman33 发表于 2021-6-9 11:22:14

分包啊,tcp自定义协议传大文件必须要分包,不仅仅是断点续传的需求,合理分包大小还可以极大提高tcp传输效率

qinxg 发表于 2021-6-10 08:35:49

分包.一个包1400byte多点.建立连接后, 由服务器发回文件名字, 起始字节, 包序号........

polarbear 发表于 2021-6-10 08:57:13

tcp断了,之前传送一半的数据肯定就没有了, 传送上G大小的数据,工程上不会使用一个TCP包扔过去就不管的方案

kitten 发表于 2021-6-10 09:16:12

你板子上装个迅雷不就搞定了?{:lol:}
页: [1]
查看完整版本: tcp大数据传输过程中被中断应该如何处理呢?