2015-05-04 125 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