接收的DatagramPacket我有一個UDP服務器用C langage這在我的LAN每5秒廣播paquets寫道,在端口3001的Android UDP:如何從LAN
我創建一個Android應用程序作爲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