2015-10-14 78 views
0

我想在我的Android模擬器中獲得遠程計算機在本地網絡上發送的一些傳入數據。因此,首先,調試Android UDP偵聽

InetAddress[] inetAddress = InetAddress.getAllByName(android_emulator_ip); 
s = new DatagramSocket(); 
s.connect(inetAddress[0], some_udp_port); 

我得到了android_emulator_ip運行adb shell;ifconfig eth0。這個IP是遠程計算機使用的。

奇怪的是,如果我改變這個ip到一個隨機,我在斷點調試器的DatagramSocket對象,價值isConnected =true

順便說得到,我不能趕上任何錯誤下列。如果我登錄以下trys.receive(p);後,它似乎並沒有被讀取

byte[] message = new byte[300]; 
DatagramPacket p = new DatagramPacket(message,message.length); 
try{ 
    s.receive(p); 
}catch{...} 

回答

0

我明白了調試設置超時這樣

s = new DatagramSocket(some_udp_port); 
s.setSoTimeout(3000); 

,然後這個工作

byte[] message = new byte[256]; 
DatagramPacket p = new DatagramPacket(message,message.length); 
try{ 
    s.receive(p); 
} 

該問題與使用connect有關,因此將仿真器置於服務器的位置而不是監聽器