簡體   English   中英

僅在第一次運行時收到來自 Java 的 UDP 消息

[英]UDP messages from Java are received only on first run

我正在使用 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);

    }
}

我想念什么? 謝謝

這似乎是ncat的一個功能。 收到1個UDP包后,只接受來自同源主機和端口的包。 它類似於連接: ncat的一個實例只處理來自單個客戶端的數據包。

當您啟動 Java 程序時,它將 select 一個任意本地端口,當您重新啟動它時,您將獲得一個不同的端口。 您可以通過將其傳遞給DatagramSocket構造函數來設置固定的本地端口:

DatagramSocket datagramSocket = new DatagramSocket(12345);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM