メッセージのマルチキャストIP230.10.10.10、ポート11111をリッスンするUDPクライアントを実行しています。UDPブロードキャスターと同じサーバーでクライアントJavaコードを実行すると、UDPメッセージを受信できます。ただし、同じドメイン内の別のサーバーで実行すると、メッセージが表示されません。
Windows Server2008を使用しています。デバッグ方法を教えてください。
メッセージのマルチキャストIP230.10.10.10、ポート11111をリッスンするUDPクライアントを実行しています。UDPブロードキャスターと同じサーバーでクライアントJavaコードを実行すると、UDPメッセージを受信できます。ただし、同じドメイン内の別のサーバーで実行すると、メッセージが表示されません。
Windows Server2008を使用しています。デバッグ方法を教えてください。
まず、UDPは保証された配信プロトコルではありません。次に、UDPパケットがファイアウォールで保護されているか、ネットワーク上でフィルタリングされている可能性があります。
クライアントマシンからポート11111でサーバーマシンに接続できますか?
助けてくれてありがとう。私は今それを解決しました。解決策は、リスナーでsetInterface()メソッドを呼び出すことでした。
DatagramSocket datagramSocket = new MulticastSocket(multicastPort);
((MulticastSocket) datagramSocket).setInterface(inetNicAddress);
ブロードキャスターはマルチホームで、2つのIPアドレスを持ち、リスナーは1つのIPを持っているため、setInterfaceメソッドでリスナーIPを設定すると、正常に機能しました。
しかし、これがどのように機能するかはまだわかりません。これは、setInterfaceメソッドがマルチホームであり、問題がないため、ブロードキャスターで呼び出されるためです。しかし、なぜリスナーにも設定する必要があるのでしょうか。。どんなアドバイスも役に立ちます。
問題は、マルチキャストパケットのTTLでもある可能性があります。0の場合、パッケージはローカルでのみ受信できます。Wiresharkなどのツールを使用してネットワークトラフィックを検査することをお勧めします。それが問題である場合は、TTL値を32に増やします。また、を設定する必要がある場合があります-Djava.net.preferIPv4Stack=true
。