0

メッセージのマルチキャストIP230.10.10.10、ポート11111をリッスンするUDPクライアントを実行しています。UDPブロードキャスターと同じサーバーでクライアントJavaコードを実行すると、UDPメッセージを受信できます。ただし、同じドメイン内の別のサーバーで実行すると、メッセージが表示されません。

Windows Server2008を使用しています。デバッグ方法を教えてください。

4

3 に答える 3

1

まず、UDPは保証された配信プロトコルではありません。次に、UDPパケットがファイアウォールで保護されているか、ネットワーク上でフィルタリングされている可能性があります。

クライアントマシンからポート11111でサーバーマシンに接続できますか?

于 2011-09-16T14:49:12.540 に答える
1

助けてくれてありがとう。私は今それを解決しました。解決策は、リスナーでsetInterface()メソッドを呼び出すことでした。

DatagramSocket datagramSocket = new MulticastSocket(multicastPort);
((MulticastSocket) datagramSocket).setInterface(inetNicAddress);

ブロードキャスターはマルチホームで、2つのIPアドレスを持ち、リスナーは1つのIPを持っているため、setInterfaceメソッドでリスナーIPを設定すると、正常に機能しました。

しかし、これがどのように機能するかはまだわかりません。これは、setInterfaceメソッドがマルチホームであり、問​​題がないため、ブロードキャスターで呼び出されるためです。しかし、なぜリスナーにも設定する必要があるのでしょうか。。どんなアドバイスも役に立ちます。

于 2011-09-20T04:36:03.320 に答える
0

問題は、マルチキャストパケットのTTLでもある可能性があります。0の場合、パッケージはローカルでのみ受信できます。Wiresharkなどのツールを使用してネットワークトラフィックを検査することをお勧めします。それが問題である場合は、TTL値を32に増やします。また、を設定する必要がある場合があります-Djava.net.preferIPv4Stack=true

于 2011-09-17T11:21:31.213 に答える