Bei der Arbeit an einer Java-Anwendung unter Mac OS X (Lion, 10.7.2, Java-Version "1.6.0_29") stoße ich auf ein seltsames Problem, wenn ich versuche, Multicast-UDP-Datagramme zu senden. Die Pakete werden nur auf einer NIC gesendet, und ich habe keine Kontrolle darüber, auf welcher.
Der folgende Beispielcode veranschaulicht, was ich zu tun versuche:
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.");
}
}
Während ich diesen Code ausführe, verwende ich Wireshark, um den gesamten Datenverkehr zu untersuchen, der über en0 abgewickelt wird. Es werden keine Pakete über den angegebenen Port gesendet. Diese Pakete erscheinen jedoch in der Ablaufverfolgung für en1.
Wenn ich en1 deaktiviere, gehen die Pakete ordnungsgemäß über en0 raus.
Ich bin hier ratlos. Weiß jemand, was hier los ist?