Java 使用DatagramSocket时无法访问端口

Java 使用DatagramSocket时无法访问端口,java,networking,udp,datagram,icmp,Java,Networking,Udp,Datagram,Icmp,我创建了使用UDP传输数据的客户端和服务器软件(由于TCP带宽限制,我们需要使用UDP)。当我在localhost上运行它时,它会按照我想要的方式运行,因此我将服务器应用程序移动到了实际的服务器上,这就是出现问题的时候 经过一个小时的调试和跟踪,会发生以下情况: 客户端通过DatagramSocket发送DatagramPack 服务器(计算机)接收它 应用程序从未收到它,也从未发送回正确的数据包 我的操作系统发送回ICMP消息:目标不可访问(端口不可访问) 客户端在端口25055上运行,服

我创建了使用UDP传输数据的客户端和服务器软件(由于TCP带宽限制,我们需要使用UDP)。当我在localhost上运行它时,它会按照我想要的方式运行,因此我将服务器应用程序移动到了实际的服务器上,这就是出现问题的时候

经过一个小时的调试和跟踪,会发生以下情况:

  • 客户端通过DatagramSocket发送DatagramPack
  • 服务器(计算机)接收它
  • 应用程序从未收到它,也从未发送回正确的数据包
  • 我的操作系统发送回ICMP消息:目标不可访问(端口不可访问)
客户端在端口25055上运行,服务器在端口25056-25060上运行。在我所做的Wireshark跟踪中,我可以看到数据包是从正确的端口发送到正确的端口的。我已经禁用了防火墙,并授予topuser对该软件的权限

重要代码:

socket = new DatagramSocket(clientPort);
socket = new DatagramSocket(serverPort);

private void sendPacket() throws Exception
{
packet = new DatagramPacket(data, data.length, address, serverPort);
socket.send(packet);
}

private void receivePacket(int packetSize) throws Exception
{
if(data == null || data.length != packetSize)
    data = new byte[packetSize];
packet = new DatagramPacket(data, packetSize);
socket.receive(packet);
}

有人知道为什么会这样吗?任何想法都将受到极大的赞赏。

“无法到达端口”意味着在该端口没有接收到任何内容。你把港口弄错了


顺便问一下,第一条线的目的是什么?因为它没有。

您能澄清一下您是如何在您的案例中设置“服务器”套接字的吗