2015-05-04 182 views
0

我有一個方框,它在收到UDP數據包後發送UDP響應。 我終於找到了example 如何實現UDP服務器。 它接收UDP包沒關係。在Android設備上發送UDP後無法接收UDP響應

我的應用程序中有一個按鈕。 如果我點擊它,我發送UDP數據包到 ,但我沒有得到的迴應。 我看到該框從我的Android設備收到此數據包 併發送響應。 我UDP客戶端低於:

public class AsyncSendUdp extends AsyncTask<String, Void, Boolean> { 
    InetAddress inet_addr; 
    DatagramSocket socket; 

    @Override 
    protected Boolean doInBackground(String... arg0) { 
     byte[] ip_bytes = new byte[]{(byte) 192, (byte) 168, (byte) 0, (byte) 11}; 
     try { 
      inet_addr = InetAddress.getByAddress(ip_bytes); 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } 
     char[] bufc = {1, 2, 3, 4}; 
     byte[] buffer = new byte[4]; 
     for (int i = 0; i < 4; i++) { 
      buffer[i] = (byte) bufc[i]; 
     } 
     DatagramPacket packet = new DatagramPacket(buffer, buffer.length, inet_addr, 0xbac0); 
     try { 
      socket = new DatagramSocket(); 
      socket.send(packet); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
} 

我發如下:

new AsyncSendUdp().execute("mmm"); 

我不明白問題出在哪裏。 任何想法請!

回答

0

你從來沒有真正閱讀傳入的消息。你會想是這樣的:

byte[] inBuffer = new byte[N]; 
DatagramPacket inPacket = new DatagramPacket(inBuffer, inBuffer.length); 
while (!exitCondition) { 
    socket.receive(inPacket); 
    // do something with your received packet 
} 
+0

我用收到的代碼在上面參考答案明顯:http://stackoverflow.com/questions/16752205/simple-udp-server-for-android-and -get-multi-messages它的工作原理。它永久準備好接收。我的問題是發送UDP後接收不起作用。也許測試框的答案來得太快?我的UDP服務器代碼在發送數據包後還沒有準備好接收?我沒有其他想法。但我不能插入延遲。該應用程序應該處理數據包非常快。非常好的性能.... – Niaz

+0

我不能插入延遲到它之間的盒子從我的應用程序和反饋接收數據包。我無法改變盒子的性能。奇怪的Wifi問題?但是我在模擬器上看到了相同的性能。計算機通過電線連接到本地網絡。 – Niaz