在Android设备上发送UDP后无法接收UDP响应
问题描述:
我有一个方框,它在收到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");
我不明白问题出在哪里。 任何想法请!
答
你从来没有真正阅读传入的消息。你会想是这样的:
byte[] inBuffer = new byte[N];
DatagramPacket inPacket = new DatagramPacket(inBuffer, inBuffer.length);
while (!exitCondition) {
socket.receive(inPacket);
// do something with your received packet
}
我用收到的代码在上面参考答案明显:http://stackoverflow.com/questions/16752205/simple-udp-server-for-android-and -get-multi-messages它的工作原理。它永久准备好接收。我的问题是发送UDP后接收不起作用。也许测试框的答案来得太快?我的UDP服务器代码在发送数据包后还没有准备好接收?我没有其他想法。但我不能插入延迟。该应用程序应该处理数据包非常快。非常好的性能.... – Niaz
我不能插入延迟到它之间的盒子从我的应用程序和反馈接收数据包。我无法改变盒子的性能。奇怪的Wifi问题?但是我在模拟器上看到了相同的性能。计算机通过电线连接到本地网络。 – Niaz