3

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

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

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

我们如何才能实现这种沟通?

请帮我。谢谢你。

4

2 回答 2

1

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

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

希望这可以帮助。

于 2011-06-17T09:08:18.837 回答
0

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

于 2011-03-31T07:52:27.273 回答