2011-10-13 189 views
3

我有一個問題,我的Android設備(一個HTC Incredible運行的股票2.3.4 ROM)無法接收廣播UDP,但是當我獲得IP該設備(在同一網絡上)並將數據包直接發送到IP,手機會立即識別並解釋它。我已經使用WireShark在兩臺不相關的PC上進行了測試,一臺甚至不在這個網絡上的同一臺交換機上,兩者都能夠看到數據包(雖然他們確實稱這個數據包「格式錯誤」)。但是,手機從未接收需要包中的任何數據),所以我想知道發生了什麼。Android沒有收到廣播UDP,但收到定向UDP

模擬器中也發生了同樣的情況。

這是當前的代碼。

   m_UDPSocket = new DatagramSocket(9000); 
       m_UDPSocket.setBroadcast(true); // unneeded? 
       boolean finished = false; 

       byte[] buf = new byte[1024]; 
       DatagramPacket packet = new DatagramPacket(buf, buf.length); 

       m_UDPSocket.setSoTimeout(1000); 
       do { 

        finished = true; 
        try 
        { 
         m_UDPSocket.receive(packet);  
        } 
        catch (SocketTimeoutException e) 
        { 
         finished = false; 
         System.out.print("Socket recieve timed out");        
        } 

       } while(finished == false); 
       System.out.print(buf); 
       InetAddress address = packet.getAddress(); 

所以是我的電話拒絕UDP廣播報文的某些原因,沒有辦法測試,它正在接受我的手機上的數據包?這是宏達不可思議的問題HTC issue,我需要圍繞此編程?

在此事先感謝您提供的任何幫助。

+0

您需要一個多播地址(或廣播),都是特殊地址和廣播是(子)網絡依賴http://en.wikipedia.org/wiki/Multicast_address – bestsss

+0

我正在使用廣播地址。我正在測試接收機的兩臺機器能夠同時看到它,它是在192.168.78.255這是我們的子網上發送的。 – Kinglink

+0

機器是用以太網電纜還是通過wifi連接? – slayton

回答

0

這是HTC的不可思議的問題HTC問題

看起來非常像它。

我需要爲此編程嗎?

除了依靠廣播,你不能。

2

嘗試使用multicastlock。看起來你的手機忽略了不直接寄給他的數據包(就像廣播一樣)。

答案有點晚了......但也許它有助於有同樣問題的人。 :)