2015-10-14 3 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

Кстати, я не могу поймать какую-либо ошибку в следующие. Если я вхожу после s.receive(p); в следующем try блоке, он, кажется, не следует читать

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 и поэтому для размещения эмулятора в позиции сервера, а не слушателя