如何设置udp广播的源地址?

时间:2014-07-13 13:37:23

标签: java udp broadcast

我有这个代码通过局域网发送广播消息,它工作正常,直到我安装虚拟机,我现在有一个虚拟网络适配器。

  String address = "255.255.255.255";
    try {
        packet.setAddress(InetAddress.getByName(address));
        packet.setPort(59123);
        DatagramSocket socket = new DatagramSocket();
        socket.setBroadcast(true);
        socket.send(packet);
        ...

现在当我尝试播放时,Wireshark显示从192.168.56.1(虚拟适配器的IP地址)发送的消息

我如何设置我想用来发送信息的适配器?

2 个答案:

答案 0 :(得分:1)

使用DatagramSocket constructor,它将本地inet地址绑定到。

答案 1 :(得分:0)

clientSocket = new DatagramSocket(0, InetAddress.getByName("IP address"))

这里0表示操作系统会自动为您分配一个端口。或者,您可以提供一个端口号,通过该端口号发送UDP数据包。

Suppose your ethernet IP address 192.168.1.2
and your wifi IP address is: 192.168.2.2

如果你想通过wifi网卡发送UDP数据包,那么IP地址将是192.168.2.2。