Mac OS X(Lion、10.7.2、Javaバージョン "1.6.0_29")でJavaアプリケーションを操作しているときに、マルチキャストUDPデータグラムを送信しようとしています。パケットは1つのNICでのみ送信されており、どのパケットを制御するのかわかりません。間違ったNIC(Java、Mac OS X)で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.");
}
}
このコードを実行する一方で、私はすべてのトラフィックがen0の上外出検討するWiresharkのを使用しています。指定されたポートではパケットは送信されません。しかしながら、前記パケットは、en1のトレースに現れる。
en1を無効にすると、パケットは適切にen0に送信されます。
私はここに迷っています。誰が何が起こっているのか分かっていますか?
通常、それは仕事をするでしょう。残念ながら、私が書いているサービスの性質上、別のアプリケーションで既に使用されているポート上にあることが必要です。バインドしようとすると、 'BindException'がスローされます。しかし、試してくれてありがとう。編集:または私は私の脳を使用して、0のポートとバインドすることを伝えることができますありがとう! – Terrana