很多时候我们通过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对网络协议似乎不是太严禁:)