HELLO,我在调试安卓设备时发现当路由器重启后,设备获取不到IP地址(使用的DHCP),通过抓包工具发现,安卓设备的discover包在路由器还没有完全起来之前就已经发送完毕,并且后续一直都没有discover包发出
正常情况在获取不到iP的情况下应该是每5分钟或者是几分钟发送一个discover包吧,不知道我的理解对不对?这里为什么没有包了呢? 相关的代码又在什么地方呢? 大家来帮忙分析分析吧,谢谢啦
此问题已解,原因是我们的安卓设备中的dhcpcd守护进程的超时时间是30s,而路由器完全起来需要30多秒,所以导致路由器还没有完全起来,安卓设备中的dhcpcd进程已经是stoped了,后续的discover包就无法发出;故将dhcpcd的超时时间加长,以及使用定长的间隔时间发送discover包,此问题得解。dhcp标准协议中的discover包前面四个包的发送间隔是随机发送的只有第一个包后间隔1s,后面几个包是随机数会逐渐增大;四个包发送完后,后面好像是隔5分钟发一个包,这里看不到所发的包是因为dhcpcd守护进程已经停止。
我也有类似的问题,我的是安卓7.1.2。
就是网络风暴时,设备失去了ip,但是网络风暴结束后,并没有发送discover包
而且另外有一个奇怪的现象,就是在adb shell中通过 ifconfig 可以发现已经获取到ip,但是在应用层却没有更新 ip 地址,还是显示 "获取中",而且上不了网。请问又是什么原因。(这是另外出现的)
好像安卓7.1.2已经不是使用dhcpcd进程来获取,请问题主有研究过安卓7的相应内容吗?
谢谢