【发布时间】:2011-12-21 18:12:57
【问题描述】:
在 Mac OS X(Lion,10.7.2,Java 版本“1.6.0_29”)下处理 Java 应用程序时,我在尝试发送多播 UDP 数据报时遇到了一个奇怪的问题。数据包只在一个网卡上发送,我无法控制哪一个。
以下示例代码说明了我正在尝试做的事情:
public class MCast {
public static void main(String[] args) throws IOException {
InetAddress multicastAddr = InetAddress.getByName("224.0.0.1");
int port = 58680;
byte[] data = "test".getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, multicastAddr, port);
MulticastSocket socket = new MulticastSocket();
socket.joinGroup(multicastAddr);
socket.setNetworkInterface(NetworkInterface.getByName("en0"));
socket.send(packet);
System.out.println("Packet sent.");
}
}
在执行此代码时,我正在使用 Wireshark 检查 en0 上的所有流量。在指定的端口上不发送任何数据包。但是,上述数据包确实出现在 en1 的跟踪中。
当我禁用 en1 时,数据包在 en0 上正常发出。
我在这里不知所措。有谁知道怎么回事?
【问题讨论】: