作者:伤心脑残猪_940 | 来源:互联网 | 2023-05-19 17:05
都说RakNet是基于UDP可靠传输的,可是我翻了源码来看却找不到实现丢包、超时重发等的代码,每次发送它都是调用了sendto就返回了,怎么回事?请高手讲讲
3 个解决方案
UDP的协议一定是不可靠传输的
基本UDP的协议有可能是可靠的,但大部分是不可靠的
我听说过2种UDP协议的典型应用
网络游戏中把游戏中人物自己的位置发给周围玩家,是通过基于UDP协议不停发送而且无任何校验机制的,因为偶而有发错的,人的眼睛根本看不出来~但网络十分卡的话,画面就会卡,没办法的
流媒体也是1种,通过某种机制,使丢包只会造成马塞克,或画面减少帖数,而不会出现播放错误
通常用UDP也就是不在意丢几个包,而在意速度
这种游戏,有一点丢包不会影响游戏使用,可以继续进行等...
不了解RakNet。对于UDP,如果要可靠传输,就需要有应答机制,具体做法由自己来设计。比较容易想到的是每发一个包就等待对方回应,如果一定时间内没有收到回应,就自动重发。如果对速度要求较高,则不宜采用这种方式,发送端可以连续发送,接收端每隔一段时间对已收到的数据进行检查,发现丢失时告知发送端重发这些丢失的数据。