0
我有下面的代碼接收UDP數據包:Android的UDP服務器沒有收到數據包
public class AsyncReceiveUdp2 extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... f_url) {
int udp=111;
byte[] packet = new byte[2000];
DatagramPacket dp = new DatagramPacket(packet, packet.length);
DatagramSocket ds = null;
try {
ds = new DatagramSocket(udp);
ds.receive(dp);
//...
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
return null;
}
}
我從Android設備UDP數據發送到計算機。 計算機立即以UDP數據包的形式發送響應。 我將信息保存到SD上的日誌文件中。 而且我看到,我的應用停留在「ds.receive(dp)」行上。並沒有在它之後運行。 我已經在Android設備上針對計算機上的程序進行了測試。 據我所知,在模擬器上接收UDP數據包很棘手。 我無法做到。 重定向不適用於我,因爲它描述了here
另一個重要問題是接收所有發送到設備的數據包。無損。如何修改該代碼?
請幫忙!謝謝!
UDP不是一個無損協議,使用TCP ..它檢查數據包是否已收到並它與一個32位CRC –
協議完整性我工作是UDP協議。沒有機會選擇。謝謝。 – Niaz
好的,但你不能確定會收到一個數據包。這是UDP和TCP之間的區別。 UDP更快,因爲您不檢查是否收到數據包。 TCP的處理包括數據包格式錯誤(CRC錯誤) –