在Java中,什么更适合于网络?UDP还是TCP? 2 月 Questions & Answers 797 在java中,mmo游戏应该使用什么。UDP还是TCP?为什么?TCP是一种点对点关系,它承载每个数据包,而UDP没有点对点关系,它可以丢弃数据包,从而导致延迟。在这个场景中,哪一个更好
# 2 楼答案 我对UDP和TCP的经验如下: UDP的速度明显加快。我们说的是两个数量级李> 在有线网络上,UDP数据包丢失率小于1% 在无线网络上,UDP数据包的丢失率很容易达到80%,而到路由器的物理距离很重要:在一英尺之外,你会丢失20%的数据包,在20英尺之外,你会丢失50%的数据包李> 所以UDP对于非必要的东西是好的。例如,如果两个家伙在你的游戏中四处奔跑,玩家A每100毫秒通过UDP接收玩家B的当前坐标和速度,那么玩家A可以推断一段时间而不会走得太远。另一方面,如果玩家A的房子已经满了,而玩家B的房子已经和皇室齐平,情况就不同了 在我的项目中,我使用UDP作为主要通信方案,每个接收器都会发回一个通知。如果通信失败的时间超过X,我会求助于TCP
# 3 楼答案 这个问题实际上与Java无关。UDP数据报不能保证到达目的地,TCP数据报是。连续的UDP数据报也可能无序地到达目的地。例如,DNS基于UDP,因为请求和响应只需要一个数据报。如果您需要可靠性,不想执行重试。TCP是你的选择。如今,计算开销非常小,因此我认为支持UDP不会带来太多性能提升
# 4 楼答案 不管是不是Java,TCP和UDP都有与语言无关的优点和缺点 但通常情况下,它归结为一个基本的设计问题:当数据包被丢弃时,会发生什么 假装从未发生过。这是我们的地盘李> 等待数据包重新发送。这就是应该使用TCP的地方李> 这两种方法本身都不是对的或错的,都会在游戏中造成问题,但这是你应该首先回答的问题
# 5 楼答案 答案不取决于语言,而是取决于游戏的要求 如果你的游戏可以处理玩家(或服务器)状态更新,或者是丢失,或者是出现故障,那么UDP就可以了 如果您需要具有最小延迟的实时响应(并且上述问题已经解决),那么您还应该使用UDP 否则,您应该使用TCP
# 1 楼答案
请看这个问题:
Android game UDP / TCP?
# 2 楼答案
我对UDP和TCP的经验如下:
所以UDP对于非必要的东西是好的。例如,如果两个家伙在你的游戏中四处奔跑,玩家A每100毫秒通过UDP接收玩家B的当前坐标和速度,那么玩家A可以推断一段时间而不会走得太远。另一方面,如果玩家A的房子已经满了,而玩家B的房子已经和皇室齐平,情况就不同了
在我的项目中,我使用UDP作为主要通信方案,每个接收器都会发回一个通知。如果通信失败的时间超过X,我会求助于TCP
# 3 楼答案
这个问题实际上与Java无关。UDP数据报不能保证到达目的地,TCP数据报是。连续的UDP数据报也可能无序地到达目的地。例如,DNS基于UDP,因为请求和响应只需要一个数据报。如果您需要可靠性,不想执行重试。TCP是你的选择。如今,计算开销非常小,因此我认为支持UDP不会带来太多性能提升
# 4 楼答案
不管是不是Java,TCP和UDP都有与语言无关的优点和缺点
但通常情况下,它归结为一个基本的设计问题:当数据包被丢弃时,会发生什么
这两种方法本身都不是对的或错的,都会在游戏中造成问题,但这是你应该首先回答的问题
# 5 楼答案
答案不取决于语言,而是取决于游戏的要求
如果你的游戏可以处理玩家(或服务器)状态更新,或者是丢失,或者是出现故障,那么UDP就可以了
如果您需要具有最小延迟的实时响应(并且上述问题已经解决),那么您还应该使用UDP
否则,您应该使用TCP