我正在运行一个主动循环等待UDP数据包的线程。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的虚拟机正在保存某处缓冲区中的所有数据包,并在可能时处理它!
我需要在Android中尽快处理数据报的数据包。
看来我失去了一些东西。
任何意识到这是最好的方式来做到这一点?!
有时更新日志还费时,所以不知道你指的是哪个时间。其次,我会建议记录收到的时间。 – kosa 2012-04-27 18:32:28
你的问题究竟是什么/每秒只接收20或50包的奇怪行为?是的,低级网络硬件和软件会做一些缓冲。 – zapl 2012-04-27 18:41:56
@thinksteep我需要在收到后立即处理数据包。例如。 doSomething的(消息); Log.d只是一个例子。 – Jorge 2012-04-27 19:16:56