UDP传输数据包丢失,怎么解决
UDP传输数据包丢失,如何解决
遇到一点问题:
UDP是不可靠传输,进行数据传递时,会有数据包丢失。我们已经做了重传机制,在有数据包丢失后,进行传输。
但是还有问题,刚开始使用时,传输比较稳定,用了一段时间后,就有发送失败的情况,重传后也不能发送,然后把路由器断电重新开始后,又稳定了。我们分析是数据包发送多后,造成网络堵塞。或者我们分析是错误的,可能是其他情况导致数据包丢失。
想请教各位下,UPD的数据包有生命周期吗?能不能接收到后,就把数据包kill掉?
------解决方案--------------------
看看发送的 UDP 包是否有超过网络的限制.
不过是局域网内应该问题不大.
------解决方案--------------------
我们分析是数据包发送多后,造成网络堵塞。
可有具体抓包看过?
UDP本来是不可靠的,如果要可靠,只能自行添加类似TCP的重传机制,但是TCP的流量控制又是不好掌握,所以如果需要可靠,不如直接用TCP。
又或者改变算法/业务逻辑,使之在掉包的情况下也能正确处理。
------解决方案--------------------
采用应答机制保证丢包重传,也可以加入心跳机制来保证。
------解决方案--------------------
加了这些其实不如直接用TCP了。。。
------解决方案--------------------
有些时候用udp有优势,如果使用tcp,新的问题接踵而至,比如:并发连接数、采用何种模型
------解决方案--------------------
任何通讯手段如果没有应答机制都形同虚设!
------解决方案--------------------
you can implement a like tcp function using udp.
http://www.codeproject.com/Articles/16935/A-Chat-Application-Using-Asynchronous-UDP-sockets
遇到一点问题:
UDP是不可靠传输,进行数据传递时,会有数据包丢失。我们已经做了重传机制,在有数据包丢失后,进行传输。
但是还有问题,刚开始使用时,传输比较稳定,用了一段时间后,就有发送失败的情况,重传后也不能发送,然后把路由器断电重新开始后,又稳定了。我们分析是数据包发送多后,造成网络堵塞。或者我们分析是错误的,可能是其他情况导致数据包丢失。
想请教各位下,UPD的数据包有生命周期吗?能不能接收到后,就把数据包kill掉?
UDP
通信
可靠传输
数据包
------解决方案--------------------
看看发送的 UDP 包是否有超过网络的限制.
不过是局域网内应该问题不大.
------解决方案--------------------
我们分析是数据包发送多后,造成网络堵塞。
可有具体抓包看过?
UDP本来是不可靠的,如果要可靠,只能自行添加类似TCP的重传机制,但是TCP的流量控制又是不好掌握,所以如果需要可靠,不如直接用TCP。
又或者改变算法/业务逻辑,使之在掉包的情况下也能正确处理。
------解决方案--------------------
采用应答机制保证丢包重传,也可以加入心跳机制来保证。
------解决方案--------------------
加了这些其实不如直接用TCP了。。。
------解决方案--------------------
有些时候用udp有优势,如果使用tcp,新的问题接踵而至,比如:并发连接数、采用何种模型
------解决方案--------------------
任何通讯手段如果没有应答机制都形同虚设!
------解决方案--------------------
you can implement a like tcp function using udp.
http://www.codeproject.com/Articles/16935/A-Chat-Application-Using-Asynchronous-UDP-sockets