java - 我没有收到来自 Java 的 DatagramPacket 的响应

标签 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 进行端口转发。

最佳答案

您绝对应该在 localhost 上尝试(在 localhost 上,您可以轻松地调试您的软件,了解收到消息时发生的情况)。

此外,您应该将 DatagramSocket 绑定(bind)到端口上以便接收数据包。并且发送时不需要连接 DatagramSocket

关于java - 我没有收到来自 Java 的 DatagramPacket 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426722/

相关文章:

c - recvfrom() 会修改 len 吗?

c++ - 是否可以使用 WFP 发送带有有效负载的 tcp syn 数据包?

java - iText - PdfPTable RowSpan 使用 mytable.writeSelectedRows

Java JNA加载DLL

sockets - 我可以选择使用哪个以太网端口进行 UDP 通信吗?

sockets - NaCl 中的套接字代码损坏

java - 通过通用网关发送请求时,服务器可用的应用程序和数据包层信息

java - 将 Enum.class 作为参数传递?

java - JComboBox Action 监听器

java - 使用套接字将数据从 node.js 发送到 Java