我正在尝试估算通过WiFi连接的两个Android设备之间的网络延迟以同步时钟。但是网络延迟在2ms到1024ms之间变化很大。有时我得到的延迟值在连续100次读数的2-10ms之间变化。但有时值为2ms到1024ms,连续100次读数,如2,100,570,640,2,5,150。
我正在使用套接字时间戳来确定数据包的确切接收和发送时间。我的设置使用一台笔记本电脑作为wifi接入点和两部手机。网络负载不大。我的问题是为什么它在某个时候变化较少以及为什么它有时变化很大。
如何让它变得更少。我错过了Android上的任何配置。给我一些这种行为的可能原因......
答案 0 :(得分:3)
与有线链路不同,无线链路受到许多不同因素的影响。只有sterile environment才能获得稳定的结果,而不会产生电磁或机械干扰。
大多数延迟波动是RF冲突的直接结果。 WiFi网络实施CSMA/CA协议来处理冲突。一般情况下,它会检测空中是否有任何活动,如果噪音很大,则会推迟传输。
您可以尝试尽量减少外部影响,但这仍然无法保证:
执行WiFi扫描并查看哪些频道最嘈杂。选择我们的链接占用较少。请记住,各个频道之间存在重叠,因此移动到不同的频道不一定会消除所有噪音。请参阅此处有关频道重叠以及如何选择频道的信息:http://en.wikipedia.org/wiki/List_of_WLAN_channels。
清除环境中的机械障碍物。
从SW配置中增加设备的传输(Tx)功率。
检查设备的Quality of Service(QoS)配置,进行一些调整可能会带来改进。
答案 1 :(得分:1)
使用WIFI_MODE_FULL_HIGH_PERF解决了这个问题。 获得此锁后,我观察到网络延迟不断。
http://developer.android.com/reference/android/net/wifi/WifiManager.html#WIFI_MODE_FULL_HIGH_PERF