[Java的UDP消息仅在第一次运行时收到

问题描述 投票:0回答:1

我正在使用Java的DatagramSocket将UDP消息从Java发送到本地主机上的特定端口。我使用netcat收听此端口:nc -ul 9122

在我的Java代码的第一次运行中(启动nc之后)-消息已接收并显示在我的shell上。彼此运行-未收到消息。仅重新启动nc可以。

这是我的Java代码:

public static void main(String[] args) throws IOException, InterruptedException {
    byte[] buf = "Hi There\n".getBytes();

    InetAddress address = InetAddress.getLocalHost();
    DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 9122);

    DatagramSocket datagramSocket = new DatagramSocket();
    datagramSocket.connect(InetAddress.getLocalHost(), 9122);
    if(datagramSocket.isConnected()) {
        datagramSocket.send(packet);
        Thread.sleep(500);
        datagramSocket.send(packet);
        Thread.sleep(500);
        datagramSocket.send(packet);

    }
}

我想念什么?谢谢

java udp netcat datagram
1个回答
0
投票

这似乎是ncat的功能。收到一个UDP数据包后,它仅接受来自同一原始主机和端口的数据包。它类似于连接:ncat的实例仅处理来自单个客户端的数据包。

启动Java程序时,它将选择一个任意的本地端口,而重新启动它时,将获得另一个端口。您可以通过将固定的本地端口传递给DatagramSocket构造函数来设置它:

DatagramSocket datagramSocket = new DatagramSocket(12345);
© www.soinside.com 2019 - 2024. All rights reserved.