Java UDP问题

Java UDP问题,java,networking,udp,multicast,udpclient,Java,Networking,Udp,Multicast,Udpclient,我正在运行一个UDP客户端,它侦听多播ip 230.10.10.10端口11111的消息。如果我在与UDP广播机相同的服务器上运行客户机java代码,我就能够接收UDP消息。但是,如果我在同一域中的另一台服务器上运行它,则不会收到任何消息 我正在使用windows server 2008。请让我知道如何调试它 首先,UDP不是一个保证的传输协议。 其次,UDP数据包可以在您的网络上进行防火墙或过滤 您能否从客户端计算机连接到端口11111上的服务器计算机?问题还可能是多播数据包的TTL。如果为0

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


我正在使用windows server 2008。请让我知道如何调试它

首先,UDP不是一个保证的传输协议。 其次,UDP数据包可以在您的网络上进行防火墙或过滤


您能否从客户端计算机连接到端口11111上的服务器计算机?

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

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

DatagramSocket datagramSocket = new MulticastSocket(multicastPort);
((MulticastSocket) datagramSocket).setInterface(inetNicAddress);
广播是多址的,有两个IP地址,侦听器只有一个IP。因此,当我在setInterface方法中设置侦听器IP时,它工作得很好


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

我赞成。可能是您的路由器之一过滤UDP包。甚至可能是你的“服务器”的本地防火墙。因为它是服务器,我不能禁用防火墙。但是,我在防火墙设置中为端口11111添加了例外情况。我想知道的是,我如何确定这是防火墙问题还是路由器过滤器问题?是否有任何工具或任何帮助程序类来调试此功能?是否在发送方和接收方中都设置此ipv4属性?ttl设置为1以确保在两侧都设置。ttl为1意味着包被限制在同一子网中,不会被路由器转发。@jeha不,您只需在发件人处设置它。当然,如果双方都是发送者,那么将其设置为双方…很高兴听到你终于找到了解决方案。我建议你问一个新问题,而不是在你自己的答案里问一个问题。否则几乎没有人会找到它。