У меня есть UDP сервер пишет в C языка сайта вещающий paquets над моей локальной сети каждые 5 сек на порт 3001.Android Udp: Как получить DatagramPacket от LAN
я создаю андроид приложение в качестве клиента UDP, который прослушивает порт 3001 (в потоке AsyncTask) и работает до тех пор, пока метод receive() не обнаружит данных на этом порту.
Вот мой код:
private class ConnectionTask extends AsyncTask<Void, Integer, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
String receivedString = "";
byte[] receiveData = new byte[1024];
DatagramSocket clientSocket;
try {
while(true){
clientSocket = new DatagramSocket(5000);
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.receive(receivePacket);
receivedString = new String(receivePacket.getData());
}
} catch (SocketException e) {
Log.v("SocketExceptionOccured", e.toString());
e.printStackTrace();
//clientSocket.close();
} catch (IOException e) {
Log.v("IOExceptionOccured", e.toString());
e.printStackTrace();
//clientSocket.close();
}
Toast.makeText(getBaseContext(), receivedString, Toast.LENGTH_LONG)
.show();
return null;
}
}
Я проверить свой код с моим собственным устройством для отладки, с помощью кабеля USB.
Я проверил свой сервер с простым клиентом UDP (в C), запущенным на моем компьютере, и связь в порядке.
Я не знаю, почему этот код не работает. У кого-то есть идея?
Спасибо,
Как вы это понимаете, это не работает? показать некоторые журналы на обеих сторонах соединения, чтобы увидеть, где это может пойти не так – dumazy