我没有得到DatagramPacket对Java的响应

时间:2013-01-20 16:45:34

标签: java sockets packet datagram

我想检查其中一个远程主机服务器是否接受特定端口上的UDP数据包。使用SocketServer,我可以设置TCP / IP连接,但它必须使用UDP。

DatagramSocket ds;
DatagramPacket dp;
byte[] bytes = new byte[32];
InetAddress IAddress = new InetAddress.getByName("86.55.X.X");    

ds = new DatagramSocket();
ds.setSoTimeout(100);
ds.connect(IAddress, 1122);
ds.send(dp);
ds.isConnected();
dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
ds.close();

上面的代码应该可以工作,我不知道如何测试它,因为我找不到任何主机/软件/我可以在哪里运行/测试上面的代码。我正试图在远程主机上测试它。远程主机已禁用Windows操作系统和防火墙。它有一个路由器,防火墙也被禁用。我可以访问远程服务器并在路由器中进行更改。我的问题是:如果唯一打开的端口用于TCP / IP,远程主机是否可以接受UDP数据包? (港口前进)。 在路由器控制面板中,我只能将端口转发为TCP / IP。

2 个答案:

答案 0 :(得分:1)

你绝对应该尝试localhost(在localhost上,您可以轻松地调试您收到某些内容时的软件。)

此外,您应该在端口上绑定DatagramSocket以接收数据包。发送时您不需要连接DatagramSocket

答案 1 :(得分:0)

您需要将以下变量传递给JRE

java -Djava.net.preferIPv4Stack=true  ...