2015-10-14 68 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有关,因此将仿真器置于服务器的位置而不是监听器