Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java UDP网络发送JPanel_Java_Swing_Sockets_Networking_Udp - Fatal编程技术网

通过Java UDP网络发送JPanel

通过Java UDP网络发送JPanel,java,swing,sockets,networking,udp,Java,Swing,Sockets,Networking,Udp,我有一个用Java编写的非常基本的视频游戏,其中所有图形都显示在JPanel中。我希望使用UDP网络来实现这个游戏的多人功能。要做到这一点,我需要能够做的基本事情之一就是使用UDP在客户端和服务器之间发送和接收带有正确图形的JPanel 我已经阅读了使用Java UDP网络的其他问题和教程,以了解UDP是如何工作的,但我仍然不太确定如何实现一个程序,该程序使用UDP将JPanel和正确的图形从客户端发送到服务器,反之亦然 有人能给我什么建议吗?也许有一个问题与此惊人地相似,我只是在研究时错过了

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

我已经阅读了使用Java UDP网络的其他问题和教程,以了解UDP是如何工作的,但我仍然不太确定如何实现一个程序,该程序使用UDP将
JPanel
和正确的图形从客户端发送到服务器,反之亦然

有人能给我什么建议吗?也许有一个问题与此惊人地相似,我只是在研究时错过了

谢谢大家!

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

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

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

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

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


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

组件将连接到当前计算机的本机对等端,将组件传输到另一台计算机会混淆组件并导致意外和异常错误-不要这样做!与呈现当前状态实际需要的信息相比,组件的大小也会相当大。最好发送状态,因为传输组件将更快地与当前计算机的本机对等方建立连接,将组件传输到另一台计算机将混淆组件并导致意外和异常错误-不要这样做!与呈现当前状态实际需要的信息相比,组件的大小也会相当大。最好发送状态,因为通过模型状态传输会更快,您是指JPanel中显示的游戏状态吗?所以我应该通过UDP网络发送游戏状态,然后使用给定的游戏状态构建自己的JPanel?比如,如果我有一个绿色球的JPanel,它移动到右边100像素,我通过UDP网络发送,我应该发送游戏中绿色球的状态(比如它的新位置)?当我收到这些信息后,我就可以在一个新的JPanel上显示绿色的球和它的新位置了?@Midgar77:是的,游戏状态。是否通过UDP或TCP发送将取决于哪个对游戏更重要:网络速度还是绝对数据完整性。网络通信通常是最紧密的瓶颈。你想要发送一个序列化的JPanel意味着你将通过网络发送数千个数据位,而这些数据位只需要很少的数据位。通过模型状态,你是指JPanel中显示的游戏状态吗?所以我应该通过UDP网络发送游戏状态,然后使用给定的游戏状态构建自己的JPanel?比如,如果我有一个绿色球的JPanel,它移动到右边100像素,我通过UDP网络发送,我应该发送游戏中绿色球的状态(比如它的新位置)?当我收到这些信息后,我就可以在一个新的JPanel上显示绿色的球和它的新位置了?@Midgar77:是的,游戏状态。是否通过UDP或TCP发送将取决于哪个对游戏更重要:网络速度还是绝对数据完整性。网络通信通常是最紧密的瓶颈。您希望发送一个序列化的JPanel,这意味着您将通过网络发送数千个数据位,而这些数据位只需要几位。