udp客户端无法从其他应用程序访问

时间:2009-05-12 05:30:45

标签: java network-programming udp

我正在尝试使用UDP在Java中实现客户端服务器应用程序。问题是当客户端连接到服务器时,服务器注册客户端,而另一个应用程序尝试使用clientIP和clientPort连接到客户端;客户端无法获取任何数据。

我能够重新创建DatagramSocket以使用他的IP和端口连接到客户端,但是当由不同的应用程序完成时,无法实现通信。

我想提一下我在服务器上监听客户端的端口与服务器应用程序使用的端口不同。

我们如何实现这种沟通?

请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:1)

您的评论,“当客户端连接到服务器时......”让我想知道您是否在客户端的DatagramSocket上使用了connect()。如果是这样,请不要在套接字上调用connect()。 UDP是无连接协议,不需要connect()。通过在UDP套接字上调用connect(),套接字只能向/从connect()指定的主机发送/接收数据。

如果不是这种情况,那么我唯一可以想到的原因是您的客户端计算机可能启用了某些防火墙,或者您的客户端与服务器或其他主机之间存在NAT /防火墙。与Wireshark核实您的客户端是否收到来自其他应用程序的任何数据包。

希望这有帮助。

答案 1 :(得分:0)

我可能会忽略这一点,但我认为为了让您的客户端能够接受服务器上运行的其他应用程序的连接尝试,您需要在客户端中实现一些侦听模块(类似服务器的部分接受传入连接)。 您可以在此处找到一些有用的示例:http://www.java2s.com/Code/Java/Network-Protocol/UDP.htm