java udp从特定的IP地址发送

时间:2016-11-30 20:30:33

标签: java networking udp nio

我有一个服务器有很多IP地址,UDP套接字绑定到0.0.0.0所以我可以从任何一个接收UDP。如何指定要在我发送的UDP数据包中使用的源IP地址?我目前的实现是使用NIO,所以可能使用DatagramChannel来执行发送是个问题。

1 个答案:

答案 0 :(得分:1)

以下程序表明您的要求是虚构的。它表明发送到{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());
}