UDP数据包应该多久发送一次?
我写了一个用Python 2.7做的应用程序,使用UDP套接字来实现网络功能。虽然我的应用程序不是游戏,但为了网络的目的,我可以把它当作游戏,因为屏幕每秒会重绘60次。
我不需要特别精确,所以不需要每秒发送很多数据包,但我现在的网络实现方式导致其他用户看起来有点“卡”,如果每秒发送的数据包数量不够的话。
经过一些研究和尝试,我决定每50毫秒发送一个数据包。这样其他用户看起来会比较“流畅”,但过了一分钟后,他们的画面会越来越“卡”,最后甚至没有更新了。
我应该怎么做才能像视频游戏那样实现网络功能呢?感觉我好像缺少了什么基本的东西。
1 个回答
0
我觉得网络现在有点拥堵,老的数据包在路由器的队列里传输,而新的数据包却被丢掉了。
编程UDP就像是一门黑暗的艺术——你需要在网络拥堵的时候做出反应,并且减慢发送的速度。一个简单的解决办法是让接收方定期发送收到的数据包的总结(比如,每次往返时间一次),当你发现丢包太多时,就降低发送速度。理想情况下,你还可以结合一个准确的往返时间估算器,当往返时间突然增加时,提前降低发送速度。