【问题标题】:Send JPanel through Java UDP Networking通过 Java UDP 网络发送 JPanel
【发布时间】:2015-02-19 11:38:08
【问题描述】:

我有一个用 Java 编写的非常基本的视频游戏,其中所有图形都显示在 JPanel 中。我希望使用 UDP Networking 来实现这个游戏的多人游戏功能。为此,我需要做的一件基本事情是使用 UDP 在客户端和服务器之间发送和接收带有正确图形的JPanel

我已经查看了使用 Java UDP Networking 的其他问题和教程,以了解 UDP 的工作原理,但我仍然不太确定如何实现一个程序,该程序发送 JPanel,其中包含正确的图形使用 UDP 客户端到服务器,反之亦然?

有人可以给我任何建议吗?也许有一个与此非常相似的问题,我只是在研究时错过了?

谢谢!

【问题讨论】:

  • 组件获取到当前计算机的本地对等体的连接,将组件传输到另一台计算机会混淆组件并导致意外和异常错误 - 不要这样做!与渲染当前状态实际需要的信息相比,组件的大小也会相当大。最好发送状态,因为它会更快地传输

标签: java swing sockets networking udp


【解决方案1】:

要做到这一点,我需要做的基本事情之一是使用 UDP 在客户端和服务器之间发送和接收具有正确图形的 JPanel。

这正是我建议您不要这样做的。相反,我强烈建议您通过网络发送模型状态,而不是视图显示,然后允许每个站点使用模型状态来构建自己的视图。这样做会大大更有效率,因为您在线发送的数据集要小得多。但请注意,如果您这样做,那么您可能需要使用比 UDP 更可靠的传输协议,例如 TCP(尽管不一定)。

您是通过 UDP 还是 TCP 发送数据取决于哪个对您的游戏更重要:网络速度或绝对数据完整性。网络通信通常是最紧的瓶颈。您希望发送一个序列化的 JPanel 意味着您将通过网络发送数千个数据位,而这些数据位只需要几个位。

【讨论】:

  • 模型状态是指JPanel中显示的游戏状态吗?所以我应该通过 UDP 网络发送游戏的状态,然后使用给定的游戏状态构建自己的 JPanel?例如,如果我有一个绿球的 JPanel,它向右移动了 100 像素,然后我通过 UDP 网络发送,我应该发送游戏中绿球的状态(比如它的新位置)?然后在收到该信息后,我可以在新的 JPanel 上以新的位置显示绿球?
  • @Midgar77:是的,游戏状态。是通过 UDP 还是 TCP 发送它取决于哪个对您的游戏更重要:网络速度或绝对数据完整性。网络通信通常是最紧的瓶颈。您希望发送一个序列化的 JPanel 意味着您将通过网络发送数千个数据位,而这些数据位只需要几个位。
猜你喜欢
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2014-09-03
  • 2017-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多