У меня есть отдельная программа C#
, которая отправляет данные на любой IP-адрес, указанный в нем.Данные закодированы таким образом, что я могу декодировать их снова (UTF-8
) и отправить через UDPClient
.Я настроил эту программу для отправки данных в порт на моей машине, который я пересылаю на Android Emulator
.В моем приложении для этого порта установлен DatagramSocket, но мой приемный вызов не возвращает мне никаких данных ...
Я точно знаю, что данные отправляются при отладке программы C#
в операторе отправки я вижу, что он действительно отправляет данные ... Я подозреваю, что это что-то в моих настройках Socket, но я не знаю, что ...
private void updateUDPSocket(String IpAddress, String IpPort){
Inet4Address ownIpAddress = null;
int ownIpPort = 0;
/*
* Try to recover the correct Inet4Address & Port.
* Catch all possible exceptions as well.
*/
try{
ownIpAddress = (Inet4Address) Inet4Address.getByName(IpAddress);
ownIpPort = Integer.parseInt(IpPort);
} catch (UnknownHostException uhe){
uhe.printStackTrace();
} catch (NumberFormatException nfe){
nfe.printStackTrace();
}
// Check to see if the current socket is already initialised.
if(mUDPSocket != null){
// If so, close & nullify it.
mUDPSocket.close();
mUDPSocket = null;
}
// Create a new socket & catch the possible exception.
try{
mUDPSocket = new DatagramSocket(ownIpPort, ownIpAddress);
mUDPSocket.setSoTimeout(TIME_OUT_IN_MILLIS);
} catch (SocketException se){
se.printStackTrace();
}
// Log current set address & port.
Log.d(TAG, "UDPSocket set to address:" +
mUDPSocket.getLocalAddress() + ":" + mUDPSocket.getLocalPort());
}
IP-адрес, который я передаюздесь либо 0.0.0.0
(в случае эмулятора), либо IP-адрес, восстановленный из WifiManager
(в случае мобильного устройства).Это не дает сбоя при настройке сокета, но, скорее всего, я использую неправильный адрес?
Единственный вывод, который я получаю из метода приема, - это сообщение об ошибке получения тайм-аута при получении ...