Java DatagramSocket不能在internet上工作

Java DatagramSocket不能在internet上工作,java,networking,network-programming,datagram,Java,Networking,Network Programming,Datagram,我正在编写一个应用程序,它使用DatagramSockets在internet上传输数据。 如果我用localhost或127.0.0.1尝试int,它可以工作,但在internet上却不行 在搜索了这个问题之后,我发现有一个地址0.0.0.0你必须分配给它,才能让它在互联网上工作。因此,我的服务器DatagramSocket当前以以下方式打开: socket = new DatagramSocket(4713,InetAddress.getByName("0.0.0.0")); 我的客户端当

我正在编写一个应用程序,它使用DatagramSockets在internet上传输数据。 如果我用localhost或127.0.0.1尝试int,它可以工作,但在internet上却不行

在搜索了这个问题之后,我发现有一个地址0.0.0.0你必须分配给它,才能让它在互联网上工作。因此,我的服务器DatagramSocket当前以以下方式打开:

socket = new DatagramSocket(4713,InetAddress.getByName("0.0.0.0"));
我的客户端当前以与其他端口相同的方式打开。但我无法接收数据

我还想也许我需要打开路由器上的端口,但这并没有帮助

另外,我还有一个问题,如果我真的需要使用客户端构造函数中给定的端口打开DatagramSocket,我如何才能找到任何免费的udp端口,因为我不想一直使用相同的端口

有人能帮我解决这两个问题吗

我需要做什么才能让UDP数据包在互联网上工作


如果需要,如何为我的UDP客户端获取随机可用端口?

您仍在向自己广播。你需要将它发送到一个公共IP地址。我理解它,如果我使用0.0.0.0,它将使套接字从任何地方发送和接收。我在数据包中设置了地址。在这里,我将其设置为ip和带有数据的端口。只是为了再次检查,当您打开/转发udp端口时,您这样做了吗?是的,它是针对udp端口的,但仍然不工作。我不知道该怎么做才能让DatagramSockets在互联网上工作。。。