java中的mmo游戏应该使用什么。 UDP还是TCP?为什么? TCP是一种点对点关系,它承载每个数据包,而UDP没有点对点关系,可以丢弃导致滞后的数据包。在这种情况下哪一个更好用?
答案 0 :(得分:3)
答案不取决于语言,而是取决于游戏的要求。
如果您的游戏可以应对来自玩家(或服务器)的状态更新,或者丢失或者无序到达,那么UDP应该没问题。
如果您需要实时响应且延迟最小(并且上述问题已解决),那么您还应该使用UDP。
否则,您应该使用TCP。
答案 1 :(得分:2)
无论是否为Java都无关紧要,TCP和UDP具有与语言无关的优点和缺点。
但通常情况下,它归结为一个基本的设计问题:当数据包被丢弃时,会发生什么?
这两种方法本身都不对,这两种方法都会导致游戏出现问题,但这是你应该首先回答的问题。
答案 2 :(得分:1)
看到这个问题:
答案 3 :(得分:0)
这个问题并没有真正与Java相关联。 UDP数据报不能保证到达目的地,TCP数据报是。连续的UDP数据报也可以无序到达目的地。例如,DNS基于UDP,因为请求和响应只需要一个数据报。如果您需要可靠性并且不想实施重试。 TCP是您的选择。如今,计算开销很小,因此我不认为有利于UDP的性能提升。
答案 4 :(得分:0)
我对UDP和TCP的体验是这样的:
所以UDP非常适合非必要的东西。例如,如果你的游戏中有2个玩家,玩家A每100毫秒接收玩家B的当前坐标和速度,那么玩家A可以推断一段时间而不会走得太远。另一方面,如果玩家A有满屋,而玩家B有皇家同花顺,那么情况就不同了。
在我的项目中,我使用UDP作为主要通信方案,每个接收方都发回通知。如果通信失败时间超过X,我使用TCP。