我有一個問題,我的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,我需要圍繞此編程?
在此事先感謝您提供的任何幫助。
您需要一個多播地址(或廣播),都是特殊地址和廣播是(子)網絡依賴http://en.wikipedia.org/wiki/Multicast_address – bestsss
我正在使用廣播地址。我正在測試接收機的兩臺機器能夠同時看到它,它是在192.168.78.255這是我們的子網上發送的。 – Kinglink
機器是用以太網電纜還是通過wifi連接? – slayton