当硬件有数据上报时,分包传输,如果中途网络断了,恢复连接后怎样继续传输? 是否有回调显示当前发送的数据发送不成功?
这个属于业务问题。
将数据分段,每传输成功一段,服务端就返回一个确认包。 如果断开了,客户端是知道上传到哪里了,重连后只传未确认的包即可。
当然你还可以想其它办法
就是说在GatewayWorker上不存在丢包,只需要在应用层收发的时候回包确认,因为TCP层是可靠传输,基本上就不会有问题了?
对
还想请教一下 如果数据包上加个队列号,表示n包数据传输。想做到客户端和服务端的队列号一致。如何在服务端定义这个变量呢?因为可能同时连接着的设备有很多个,每个设备又会不定时的上传数据,每个设备都有自己的数据队列号,这样是不是要定一个数组表示每个设备队列号,这个数组该如何定义?或者说是其他方法来实现,还请指点一下 谢谢
另外 如果在传输数据的时候,服务器回包中途断开 http: //php.iweima.cc/temp/link.jpg (发不了图片) 如第二种情况 这个时候设备接收不到回包而实际上服务器已经接收,设备端超时,决定重发,服务器再次接收到这个数据,即重复接收了。 这种情况该怎么解决?
服务端做下兼容就好了,客户端重连后,询问服务端收到的最后一个包是哪个,然后客户端从那个包的下一个包开始传 这些都属于业务范畴,这些都需要自己想的,我说的这个方法不一定是最适合你的,要自己多想。
这个属于业务问题。
将数据分段,每传输成功一段,服务端就返回一个确认包。
如果断开了,客户端是知道上传到哪里了,重连后只传未确认的包即可。
当然你还可以想其它办法
就是说在GatewayWorker上不存在丢包,只需要在应用层收发的时候回包确认,因为TCP层是可靠传输,基本上就不会有问题了?
对
还想请教一下
如果数据包上加个队列号,表示n包数据传输。想做到客户端和服务端的队列号一致。如何在服务端定义这个变量呢?因为可能同时连接着的设备有很多个,每个设备又会不定时的上传数据,每个设备都有自己的数据队列号,这样是不是要定一个数组表示每个设备队列号,这个数组该如何定义?或者说是其他方法来实现,还请指点一下
谢谢
另外
如果在传输数据的时候,服务器回包中途断开
http: //php.iweima.cc/temp/link.jpg (发不了图片)
如第二种情况
这个时候设备接收不到回包而实际上服务器已经接收,设备端超时,决定重发,服务器再次接收到这个数据,即重复接收了。
这种情况该怎么解决?
服务端做下兼容就好了,客户端重连后,询问服务端收到的最后一个包是哪个,然后客户端从那个包的下一个包开始传
这些都属于业务范畴,这些都需要自己想的,我说的这个方法不一定是最适合你的,要自己多想。