我正在运行一个带有等待 UDP 数据包的活动循环的线程。
收到消息后,我想处理它。
我需要每秒接收几个数据包(~20)。
我举一个极简的例子,只是在接收到UDP数据包后记录
while (socketUDP != null) {
message = new byte[6];
packet = new DatagramPacket(message, message.length);
try {
socketUDP.receive(packet);
command = new String (message, 0, packet.getLength());
} catch (IOException e) {
Log.e(LOG_TAG, LOG_TAG + " IOException: " + e.getMessage() );
}
Log.d(LOG_TAG, "test");
}
这种行为很奇怪,因为,例如,我在 1 秒内发送了 50 个 UDP 数据包,没有人丢失,而 Android 需要大约 3/4 秒才能显示 50 条日志文本消息“测试”!
因此,似乎 Android 的 VM 将所有数据包保存在缓冲区中的某个位置,并在可能的情况下对其进行处理!
我需要尽快在 Android 中处理数据报的数据包。
看来我错过了什么。
有什么想法是最好的方法吗?