2012-11-21 6 views
1

를 수행 보내 보내, 내 마음 홀수, 문제에 대한함으로써 I 보내고 나는 브로드 캐스트 주소로 보낼 경우 UDP 패킷을 수신 (192.168.1.255) . 유니 캐스트 주소 (192.168.1.83)로 패킷을 보내면 패킷이 전송되지 않습니다 (Wireshark로 확인한 것입니다).유니 캐스트 UDP가 작동하지 않습니다하지만 브로드 캐스트 UDP 내가 가진

센드 기능은 다음과 같습니다

private void sendPacket(String data) { 
     try { 
      if (mSocket.isClosed()) { 
       Log.e(TAG, "Socket is closed: " + data); 
       return; 
      } 
      Log.d(TAG, "Send: " + data + " - " + myLocalIP.toString()+ " - " + myBcastIP.toString()); 
      DatagramPacket packet = new DatagramPacket(data.getBytes(), 
        data.length(), myLocalIP, BCAST_PORT); 

      mSocket.send(packet); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception during write", e); 
     } 
    } 

내 manefest 파일은 다음 권한을 가진 :

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

방송은 내가 뭘 잘못 생각할 수 없다 작동 감안할. 어떤 아이디어라도 제발?

답변

2

다른 포트를 사용해 보셨나요? UDP가 패킷의 100 % 전달을 보증하지 않을 수도 있습니다.

코드에서 socket.setBroadcast(true) somwhere를 사용하여 브로드 캐스트 메시지를 보내고 있습니까?

+0

@ MP23이 말한 것의 의미를 깨달았습니다. 유니 캐스트 메시지를 보내기 전에 ** socket.setBroadcast (false) **를 넣어야했습니다. –

관련 문제