2017-11-17 10 views
-1

Java MulticastSocketでUDPパケットを受信しようとしています。JavaでUDPパケットを受信できません

私はwiresharkに到着するパケットを見ることができ、コードは他の人には役立ちますが、私には当てはまりません。

私が間違っていることは正直に分かりません。

ファイアウォールとウイルス対策を無効にしました。

私はWindows 10とIntelliJ 2017.2.5を実行しています。

私は、ポート番号(2000または2001)をパラメータとしてMulticastSocketを作成しています。

私のJREは1.8.0_152で、私はJetBrainsが提供するJDKを使用しています。 whileループでは、私はこのようなデータを受信しよう

this.socket = new MulticastSocket(this.portNum); 
//this.socket = new MulticastSocket(); 
this.socket.setReceiveBufferSize(1 << 17); 
this.socket.joinGroup(InetAddress.getByName(this.ip)); 

そして、::チェックする

while(!this.socket.isClosed()) 
    { 
     byte[] buffer = new byte[500]; 
     DatagramPacket incomingPacket = new DatagramPacket(buffer, buffer.length); 
     try 
     { 
      this.socket.receive(incomingPacket); 
      ... 
+0

ファイアウォールを無効にしてみてください –

+0

どのくらいのデータを受信しようとしていますか(または一度にどれくらい送信していますか? '1 << 17」は128kBの受信バッファです。パケット。 – diginoise

+0

'this.ip'の値は何ですか? – EJP

答えて

0

物事は以下のとおりです。

は、これは私がMulticastSocketの作成しています方法です

  1. 受信するインターフェイスにUDPソケットをバインドしていることを確認してください。これは、WindowsとLinuxでは異なります。 Windowsの場合:受信したいインターフェイスのIPアドレスにバインドします。 Linuxでは、0.0.0.0にバインドしてすべてのインターフェイスで受信します。 (特定のインタフェースだけで受信することは、Linuxでは自明です。)this.ipがあなたのマルチキャストアドレスであることを確認してください。 224.1.2.3。

+0

すべてのシステムで0.0.0.0にバインドすることができます。 – EJP

-1

問題は解決されました。これは、関連性のない並行性の問題でした。

関連する問題