2017-11-17 17 views
-1

Java MulticastSocket에서 UDP 패킷을 수신하려고합니다.Java에서 UDP 패킷을 수신 할 수 없습니다.

나는 wireshark에 도착한 패킷을 볼 수 있으며 코드는 다른 사람들에게는 작동하지만 나에게는 적합하지 않습니다.

나는 정직하게 내가 뭘 잘못하고 있는지 모르겠다.

방화벽과 바이러스 백신을 비활성화했습니다.

저는 Windows 10 및 IntelliJ 2017.2.5를 실행하고 있습니다.

매개 변수로 portnumber (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으로 바인드하여 모든 인터페이스에서 수신합니다. (특정 인터페이스에서 수신하는 것은 간단합니다.)

  2. this.ip이 멀티 캐스트 주소인지 확인하십시오. 224.1.2.3.

    문제가 해결
+0

모든 시스템에서 0.0.0.0에 바인딩 할 수 있습니다. – EJP

-1

, 그것은 무관 ​​동시성 문제가 있었다.