簡體   English   中英

java udp從特定IP地址發送

[英]java udp send from specific IP address

我有一台具有許多IP地址的服務器,並且將UDP套接字綁定到0.0.0.0,所以我可以從其中的任何一個接收UDP。 如何指定要發送的UDP數據包中使用的源IP地址? 我當前的實現方式是使用NIO,因此可能是使用DatagramChannel執行發送。

下面的程序演示您的需求是虛構的。 它顯示源自綁定到0.0.0.0的DatagramSocket的數據報包以127.0.0.1的源地址傳遞。

public static void main(String[] args) throws IOException
{
    DatagramSocket  ds1 = new DatagramSocket(0);
    int port = ds1.getLocalPort();
    System.out.println(ds1.getLocalAddress());
    DatagramSocket  ds2 = new DatagramSocket();
    byte[] bytes = {0x01};
    SocketAddress sa = new InetSocketAddress("localhost", port);
    DatagramPacket  dp = new DatagramPacket(bytes, 0, bytes.length, sa);
    ds2.send(dp);
    ds1.receive(dp);
    ds2.send(dp);
    ds2.receive(dp);
    System.out.println(dp.getAddress());
}

我放棄了一個干凈的解決方案,只對服務器上的每個IP地址使用一個綁定的DatagramSocket,該地址可用於發送UDP以及出站數據包的特定源IP。

暫無
暫無

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

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