我正在運行一個主動循環等待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