【发布时间】:2011-09-27 22:44:42
【问题描述】:
这是我第一次用 java 编程网络。 我正在寻找一种以某种方式向整个网络中的所有节点发送广播的方法。让他们知道我的存在。 我正在尝试制作多人网络游戏,我希望客户能够看到所有可用的游戏来选择加入哪个游戏。 我想知道如何从服务器广播以及如何让客户端收听。
请简单点,我是新手:)
提前致谢。
【问题讨论】:
标签: java networking client broadcasting
这是我第一次用 java 编程网络。 我正在寻找一种以某种方式向整个网络中的所有节点发送广播的方法。让他们知道我的存在。 我正在尝试制作多人网络游戏,我希望客户能够看到所有可用的游戏来选择加入哪个游戏。 我想知道如何从服务器广播以及如何让客户端收听。
请简单点,我是新手:)
提前致谢。
【问题讨论】:
标签: java networking client broadcasting
不要混淆术语。
广播通常用于 UDP。 UDP 不可靠,因为它不检查客户端是否接收到所有数据包。不广播向大量客户端打开大量 TCP 连接。
要让您的客户端监听端口,您需要使用 ServerSocket 并读取它。
【讨论】:
要广播数据包,请将它们发送到给定子网的广播地址(子网的最后一个地址)。 IP 255.255.255.255 是zero network 的广播地址。
IP 广播地址 255.255.255.255 存在一个特殊定义。它是零网络的广播地址或 0.0.0.0,在 Internet 协议标准中代表该网络,即本地网络。根据定义,向此地址的传输受到限制,因为它永远不会被将本地网络连接到 Internet 的路由器转发。
所以要广播到您当前的网络,请将数据包发送到255.255.255.255。
【讨论】:
我建议您使用PubSubHubbub 或类似的协议。基本上,您将拥有一个“集线器”,向其发送您想要“广播”的通知。每个节点都订阅该主题,方法是提供一个 URL,当新数据到达时集线器可以调用该 URL。当“集线器”收到此广播时,集线器会联系每个订阅 URL 以让节点知道有新数据。
【讨论】: