数据传输中网络断开,恢复连接后如何重传?

huagaojian

当硬件有数据上报时,分包传输,如果中途网络断了,恢复连接后怎样继续传输?
是否有回调显示当前发送的数据发送不成功?

5840 6 0
6个回答

walkor 打赏

这个属于业务问题。

将数据分段,每传输成功一段,服务端就返回一个确认包。
如果断开了,客户端是知道上传到哪里了,重连后只传未确认的包即可。

当然你还可以想其它办法

  • 暂无评论
huagaojian

就是说在GatewayWorker上不存在丢包,只需要在应用层收发的时候回包确认,因为TCP层是可靠传输,基本上就不会有问题了?

  • 暂无评论
walkor 打赏

  • 暂无评论
huagaojian

还想请教一下
如果数据包上加个队列号,表示n包数据传输。想做到客户端和服务端的队列号一致。如何在服务端定义这个变量呢?因为可能同时连接着的设备有很多个,每个设备又会不定时的上传数据,每个设备都有自己的数据队列号,这样是不是要定一个数组表示每个设备队列号,这个数组该如何定义?或者说是其他方法来实现,还请指点一下
谢谢

  • 暂无评论
huagaojian

另外
如果在传输数据的时候,服务器回包中途断开
http: //php.iweima.cc/temp/link.jpg (发不了图片)
如第二种情况
这个时候设备接收不到回包而实际上服务器已经接收,设备端超时,决定重发,服务器再次接收到这个数据,即重复接收了。
这种情况该怎么解决?

  • 暂无评论
walkor 打赏

服务端做下兼容就好了,客户端重连后,询问服务端收到的最后一个包是哪个,然后客户端从那个包的下一个包开始传
这些都属于业务范畴,这些都需要自己想的,我说的这个方法不一定是最适合你的,要自己多想。

  • 暂无评论
年代过于久远,无法发表回答
×
🔝