我有一个服务器,有多个IP地址,并且有一个绑定到0.0.0.0的UDP套接字,以便可以从任何一个IP地址接收UDP。那么我如何指定要在发送的UDP数据包中使用的源IP地址呢?我的当前实现正在使用NIO,因此也许使用DatagramChannel来执行发送可能是问题所在。
我有一个服务器,有多个IP地址,并且有一个绑定到0.0.0.0的UDP套接字,以便可以从任何一个IP地址接收UDP。那么我如何指定要在发送的UDP数据包中使用的源IP地址呢?我的当前实现正在使用NIO,因此也许使用DatagramChannel来执行发送可能是问题所在。
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());
}