0

我正在运行一个 UDP 客户端,它侦听多播 ip 230.10.10.10 端口 11111 的消息。如果我在与 UDP 广播器相同的服务器中运行客户端 java 代码,我就能够接收 UDP 消息。但是,如果我在同一域中的另一台服务器上运行它,我不会收到任何消息。

我正在使用 Windows Server 2008。请告诉我如何调试它?

4

3 回答 3

1

谢谢大家的帮助。我现在已经解决了。解决方案是在 Listener 中调用 setInterface() 方法

DatagramSocket datagramSocket = new MulticastSocket(multicastPort);
((MulticastSocket) datagramSocket).setInterface(inetNicAddress);

广播器是多宿主的,有两个 IP 地址,监听器只有一个 IP。所以,当我在 setInterface 方法中设置监听器 IP 时,它工作正常。

但是我仍然不确定这是如何工作的,因为 setInterface 方法在广播器中被调用,因为它是多宿主的,没关系。但是为什么还要在监听器中设置它呢?. 任何建议都会有所帮助。

于 2011-09-20T04:36:03.320 回答
1

首先,UDP 不是有保证的交付协议。其次,UDP 数据包可能会在您的网络上被防火墙或过滤。

您可以从客户端计算机连接到端口 11111 上的服务器计算机吗?

于 2011-09-16T14:49:12.540 回答
0

问题也可能是多播数据包的 TTL。如果为 0,则只能在本地接收包裹。我建议您使用Wireshark之类的工具检查网络流量。如果这是问题所在,请将 TTL 值增加到 32。您可能还需要设置-Djava.net.preferIPv4Stack=true.

于 2011-09-17T11:21:31.213 回答