【发布时间】:2012-11-05 01:27:49
【问题描述】:
我正在编写脚本来管理大量 Android 模拟器,我需要禁用其中一些模拟器上的所有网络流量。因为我在无头服务器上做所有这些,所以我不能 使用emulater documentation 中描述的 F8 热键。
我目前正在使用 emulator-arm ... -http-proxy 0.0.0.0:0 通过空代理路由 TCP 流量,这会阻止我想要的流量。
我认为这运行良好,直到我在运行脚本时发现一些奇怪的错误消息。控制台开始输出accept too many open files 并使用lsof 检查打开的文件,发现大量消息表明“无法识别协议”
...
emulator- 19463 username 19u sock 0,6 0t0 1976595845 can't identify protocol
emulator- 19463 username 20u sock 0,6 0t0 1976595847 can't identify protocol
...
我发现的唯一“解决方案”是杀死所有模拟器,然后等到再次达到此限制,这根本不是解决方案。
在调用模拟器时还有其他方法可以做到这一点吗?我是否错误地使用了-htt-proxy 开关来阻止流量?
其他人通过manually doing this by using airplane mode 找到了阻止流量的解决方案,但这对我来说是不可行的,因为我正在通过脚本控制模拟器。我可以使用我的脚本将键事件发送到模拟器并以飞行模式打开手机,但我更喜欢比这更可靠的东西。
编辑:即使我没有通过空路由路由 TCP 流量,我似乎也会收到“无法识别协议”错误,所以我不知道发生了什么。鉴于我的情况,任何人都可以验证这种空路由方法是最好的方法吗?
【问题讨论】: