Java:如何使多播IP InetAddress独占?

时间:2012-01-04 05:34:23

标签: java networking broadcast multicast

我正在尝试使多播IP独占,即它可以“锁定”,当它被“锁定”时,不再有MulticastSocket可以加入它。

有可能吗?我该怎么做?这里有一些代码来解释我的案例:

String multicastIP = "224.0.0.1"; //multicast IP to "lock" later
InetAddress group = InetAddress.getByName(multicastIP); //create group

MulticastSocket multicastSocket = new MulticastSocket(8800); //Create a MulticastSocket using port 8800
multicastSocket.joinGroup(group); //join the group

//This is the part where I want to "lock" the group/IP

其他信息:

我正在开发一种网络游戏,其中单个服务器到多个客户端广播方案是通过这种方法完成的。

有一段时间我们创建了两台服务器(碰巧具有相同的多播IP),顺便说一下,客户端监听两台服务器,从两台服务器接收消息。

我们想要发生的是让客户端只收听各自的服务器。

谢谢! :d

1 个答案:

答案 0 :(得分:2)

多播不会为你做这件事。

您必须检查每个传入的数据包when you receive it,并将其与客户端发送的(source address, source port)元组进行匹配。

老实说,我认为使用muticast没有多大优势。我看到的一种方法是使用多播进行服务发现,然后在发现它之后使用单播作为“真实”协议。

编辑:对于LAN应用程序,可以接受多播。我会小心不要播放太多。 (多播基本上是对大多数交换机的广播;它们由NIC而不是网络过滤掉)也就是说,理想情况下,确保服务器是在客户端向服务器单播更新时发送多播流量的服务器。 (如果每个客户端多播状态更新,所有其他客户端都可以看到,拥有服务器的目的是什么?)