You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从主机Ping安卓模拟器?向模拟器发送WebSocket请求方法

安卓模拟器与主机网络互通及WebSocket通信解决方案

一、先明确模拟器的网络逻辑

安卓默认AVD采用NAT模式,模拟器内部IP一般为10.0.2.15,但这个IP属于模拟器私有网段,主机无法直接访问。而模拟器能通过localhost访问主机,是因为NAT做了反向映射。要实现主机到模拟器的访问,要么用端口转发,要么切换到桥接模式。

二、主机Ping模拟器的两种方法

ICMP协议在NAT模式下无法直接转发,所以得换方式验证连通性:

1. NAT模式下用TCP连通性替代Ping

  • 在模拟器里启动一个TCP监听服务,比如执行nc -l 8080(没有netcat的话,用你自己的Android应用开个临时监听端口也行)
  • 主机上执行adb forward tcp:8080 tcp:8080,将主机8080端口转发到模拟器的8080端口
  • 主机用tcping localhost 8080(或者telnet localhost 8080)验证连通,效果和Ping类似

2. 切换到桥接模式直接Ping

  • 关闭模拟器,打开AVD Manager,点击对应模拟器的「Edit」按钮
  • 展开「Show Advanced Settings」,找到「Network」选项,把「Network Mode」改成「Bridge」,选择主机的物理网卡(比如对应192.168.0.2的网卡)
  • 启动模拟器后,在系统设置→关于手机→状态信息里查看IP,这个IP和主机在同一网段,主机直接Ping该IP即可

三、向模拟器发送WebSocket请求

核心是让主机能访问到模拟器里WebSocket Server的端口:

1. NAT模式(端口转发)

  • 假设你的WebSocket Server在模拟器里监听8081端口
  • 主机执行adb forward tcp:8081 tcp:8081
  • 主机的WebSocket客户端直接连接ws://localhost:8081,请求会被转发到模拟器内部的服务

2. 桥接模式

  • 获取模拟器的局域网IP(比如192.168.0.100)
  • 主机客户端直接连接ws://192.168.0.100:8081,和访问物理设备完全一致

四、获取主机上模拟器的网络接口信息

1. 直接查询模拟器内部网络配置

主机上执行命令,拉取模拟器的网络接口和IP:

# Android 9及以下版本
adb shell ifconfig
# Android 10+版本
adb shell ip addr show

输出里的wlan0对应桥接模式的局域网IP,eth0是NAT模式的内部IP。

2. 查看已配置的adb端口转发

主机执行:

adb forward --list

会列出所有端口映射,格式为<模拟器序列号> tcp:<主机端口> tcp:<模拟器端口>,能清晰看到主机和模拟器的端口对应关系。

3. 验证主机上的端口连接状态

Windows系统用:

netstat -ano | findstr :<转发的端口号>

类Unix系统用:

lsof -i :<转发的端口号>

能看到主机对应端口的占用情况,确认端口转发是否生效。

内容的提问来源于stack exchange,提问作者Dmitry Kozin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:12:21