2012-11-21 94 views
1

我有,我的腦海裏古怪,問題由此我可以發送,如果我有一個廣播地址發送他們收到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)**。 –