[英]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.