【发布时间】:2015-11-12 01:21:08
【问题描述】:
我正在为我的朋友在局域网上玩实时 java 游戏。游戏在客户端-服务器架构中运行,它现在使用 UDP 处理一切(位置更新和加入游戏)。当我和朋友通过 Internet 测试游戏时,丢失了一些重要的 UDP 数据包(比如用于生成敌人的数据包)。
所以我的问题是,制作实时多人游戏的最佳解决方案是什么?我可以将 UDP 用于必要的更新数据包,将 TCP 用于登录、断开连接、聊天等数据包吗?我可以在同一个端口和套接字上使用这两种协议吗?
【问题讨论】:
-
如果您需要保证交付或保证交付顺序,除非您准备在您的软件中实现这些功能,否则 UDP 不适合您。 UDP 是一种发送后忘记、尽力而为的协议。 TCP 保证交货和交货顺序。
-
问题是我需要他们两个。保证在新玩家登录服务器时发送数据包,并发送和忘记用于移动和 RT 内容的数据包。我可以像使用 UDP 的询问和重新发送系统那样实现,还是值得这样做?或者我应该//我可以只使用TCP吗
-
这取决于你。您可以为 UDP 实现自己的请求并重新发送,或者对两者都使用 TCP。你知道你的要求。您可以为这两个单独的功能使用两个不同的 TCP 端口,或者您可以为 UDP 和 TCP 使用相同的端口号。权衡您的选择...
标签: java sockets networking tcp udp