我有一个用 C 语言编写的 UDP 服务器,它每 5 秒通过我的 LAN 在端口 3001 上广播 paquets。
我正在创建一个 android 应用程序作为 UDP 客户端,它正在侦听端口 3001(在 AsyncTask 线程中)并且它一直运行到接收()方法,在这个端口上似乎没有检测到数据。
这是我的代码:
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 语言)测试了我的服务器,并且通信正常。
我不知道为什么这段代码不起作用。有人有想法吗?
谢谢,