很多时候我们通过adb 连接 android 模拟器调试网络程序,也许你能直接访问浏览器,浏览网站,但是却无法ping同局网的一个机器,比如:
# ping www.sina.com
PING puppis.sina.com.cn (221.236.31.210) 56(84) bytes of data.
^C
--- puppis.sina.com.cn ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3001ms
有的说是模拟器在10.x.x的问题,但是如果是网段问题,是不会访问网站的。
我抓了一下包,验证一下,是否是模拟器屏蔽了底层的功能,不抓不知道,一抓才知道,模拟器把icmp的协议类型搞错了,本应该是0x1,结果搞成了0x11,
当然数据包也就从icmp变成了udp,相信没有那个server会在udp的echo端口监听吧。
看来google对网络协议似乎不是太严禁:)
本文探讨了使用ADB连接Android模拟器时遇到的网络调试问题,特别是无法进行ICMP ping的现象,并分析了模拟器将ICMP协议类型错误配置为UDP的问题。
1万+

被折叠的 条评论
为什么被折叠?



