我正在尝试使用 UDP 在 Java 中实现客户端服务器应用程序。问题是当客户端连接到服务器时,服务器注册客户端,另一个应用程序尝试使用 clientIP 和 clientPort 连接到客户端;客户端无法获取任何数据。
我能够重新创建 DatagramSocket 以使用他的 IP 和端口连接到客户端,但是当这由不同的应用程序完成时,无法实现通信。
我想提一下我在服务器上监听客户端的端口与服务器应用程序正在使用的端口不同。
我们怎样才能实现这种沟通?
请帮帮我。谢谢。
最佳答案
您的评论“当客户端连接到服务器时……”让我想知道您是否在客户端的 DatagramSocket 上使用了 connect()。如果是这样,请不要在套接字上调用 connect() 。 UDP 是无连接协议(protocol),不需要 connect()。通过在 UDP 套接字上调用 connect(),套接字只能向/从 connect() 指定的主机发送/接收数据。
如果不是这种情况,那么我能想到的唯一原因是您的客户端计算机可能启用了某些防火墙,或者在您的客户端和服务器或其他主机之间存在 NAT/防火墙。使用 Wireshark 检查您的客户端是否从其他应用程序接收任何数据包。
希望这对您有所帮助。
关于java - udp 客户端无法从另一个应用程序访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851266/