我们正尝试将每个Wifi的Android 7.0 UDP-Datagrams发送到服务器。 数据报大小为23字节,频率约为15毫秒。
我们有一个Queue,我们把ByteArrays放入其中。另一个Sending-Thread从线程安全队列中提取这些数组,并通过Datagramsocket将它们在Datgrams中发送到服务器。 socket.send() - 方法每10-18 ms调用一次。
服务器端的Wireshark以大约15ms的良好常规稳定间隔接收大部分数据包,但有时(大多数每150-300个数据包)存在1-3个发送周期的延迟,然后延迟数据包到达a"爆裂"暂停30-60毫秒后。
如果在运行时我们试图通过网络密集型任务(当我们启动WiFi-Analyzer-App时)对Android手机施加压力,延迟会变得更长并且显得更频繁。
增加发件人线程的ThreadPriority似乎不会对问题产生任何影响。
如果有人可以帮助我提供一些关于如何更好地控制网络接口发送过程的提示,以减少爆发并获得更稳定的常规发送间隔,我和我的伙伴们将非常感激。
答案 0 :(得分:0)
好。我们发现了。如果我没记错的话,这些问题是由后台的一些标准服务引起的,例如蓝牙(如果我没记错的话(也许它也是Wifi或GPS,很早以前就可以正常注册)了)。该服务每隔几秒钟就会寻找信号及其强度,这样做破坏了我们的数据包管道。