【发布时间】:2018-10-11 13:01:35
【问题描述】:
在我的应用程序中,我通过WifiManager 和WifiConfiguration 以编程方式连接到无法访问互联网的接入点。稍后我必须访问与其连接的设备来读取数据——但我没有走那么远。
连接到 Wifi 后,我的 DHCP 设置正常,但如果我尝试通过键入以下内容来 ping 网关地址:
$ adb shell
OnePlus6:/ $ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1015ms
网关无法访问...
我怀疑这与 Android (9?) 将所有流量重新路由到移动数据“死” Wifi 的事实有关 - 例如,您仍然可以正常浏览互联网。
您可以像这样轻松复制问题:
- 连接到无互联网接入的接入点
- 检查您的互联网是否仍然可用(例如,访问 google.com)
- 通过
adb连接您的手机并ping您的AP地址
关于如何通过 Wifi 强制流量的任何想法,即使它是“离线”的?
编辑:ip route show 的输出:
OnePlus6:/ $ ip route show
10.16.52.64/29 dev rmnet_data0 proto kernel scope link src 10.16.52.67
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.116
【问题讨论】:
-
您的 Android 设备是否也有数据连接,高于 wifi 设备?
-
是的,移动数据始终开启
-
能否请您添加以下命令的结果? ip route show(在 adb shell 中运行)
-
是的,请看我的编辑
-
奇怪,路由表好像没问题。您是否已经尝试过跟踪 ping 数据包的跃点?尝试到 192.168.1.1 的 traceroute,这样我们就可以看到流量是如何被引导的
标签: android sockets android-wifi