我有一台服务器每隔~50毫秒向我的客户端发送40字节的UDP数据包。客户端通常在大多数时间接收这些数据包。但是,每隔约1-3秒,没有数据包到达约500毫秒,然后在此之后的后续数据包到达0毫秒延迟,就像数据包被缓冲一样。
以下代码在一个单独的线程中调用,其唯一目的是接收数据包:
public synchronized int readUdp(DatagramChannel channel) throws IOException {
InetSocketAddress sourceAddress = (InetSocketAddress) channel.receive(in);
bytesRead = in.position();
in.flip();
// Read data out of buffer...
}
以下是我的调试结果的一些注释:
典型的故障如下:
Time: 49
Time: 51
Time: 49
Time: 51
Time: 307
Time: 0
Time: 0
Time: 0
Time: 0
Time: 1
Time: 41
Time: 51
Time: 49
如果有人能用一双新鲜的眼睛来检查这一点,我将非常感激。我能找到的唯一一个近距离案例是:http://www.coderanch.com/t/476539/Android/Mobile/UDP-DatagramSocket-receive-glitches。我的代码不会以任何方式与Android交互。我应该注意。