如何从安卓手机访问本地CentOS虚拟机上运行的localhost服务?
安卓手机访问CentOS7虚拟机本地服务的可行方案
方案1:同一局域网下直接访问虚拟机IP
这是最轻量化的解决方法,无需依赖adb工具:
- 获取CentOS7虚拟机的局域网IP:在虚拟机终端执行
ip addr,找到对应网卡(如ens33)的inet字段,比如192.168.1.100
- 获取CentOS7虚拟机的局域网IP:在虚拟机终端执行
- 确保服务监听范围不局限于本地:修改服务配置,将监听地址从
127.0.0.1改为0.0.0.0,重启服务(若服务不允许修改配置,可跳过此步,用后续socat转发)
- 确保服务监听范围不局限于本地:修改服务配置,将监听地址从
- 开放虚拟机防火墙端口:执行
firewall-cmd --add-port=xxxx/tcp --permanent,再执行firewall-cmd --reload(xxxx替换为你的服务端口)
- 开放虚拟机防火墙端口:执行
- 安卓手机连接与笔记本同一WiFi,在浏览器输入
http://[虚拟机局域网IP]:xxxx即可访问
- 安卓手机连接与笔记本同一WiFi,在浏览器输入
如果无法修改服务监听地址,可在CentOS7终端用socat做端口转发:
# 先安装socat工具 yum install -y socat # 将局域网IP的xxxx端口转发到localhost的xxxx端口 socat TCP-LISTEN:xxxx,fork TCP:127.0.0.1:xxxx
执行后即可通过虚拟机局域网IP:xxxx访问服务。
方案2:利用Windows主机的adb(无需在虚拟机装Android Studio)
既然虚拟机的adb版本过低,直接在Windows主机上操作:
- 在Windows上下载独立的adb平台工具包(无需安装完整Android Studio),解压后在解压目录打开命令行
- 开启安卓手机的USB调试,用USB线连接到Windows笔记本,执行
adb devices确认连接成功
- 开启安卓手机的USB调试,用USB线连接到Windows笔记本,执行
- 配置虚拟机端口转发:在虚拟机软件(如VirtualBox/VMware)的网络设置中,添加端口转发规则,将Windows主机的
xxxx端口映射到虚拟机的xxxx端口
- 配置虚拟机端口转发:在虚拟机软件(如VirtualBox/VMware)的网络设置中,添加端口转发规则,将Windows主机的
- 在Windows命令行执行
adb reverse tcp:xxxx tcp:xxxx,将手机的localhost:xxxx转发到Windows主机的localhost:xxxx
- 在Windows命令行执行
- 安卓手机浏览器输入
http://localhost:xxxx即可访问虚拟机内的服务
- 安卓手机浏览器输入
方案3:无线adb连接(无需USB线)
如果不想用USB线,可借助无线adb功能:
- 按方案2步骤在Windows上装好adb,手机连同一WiFi,开启开发者选项中的「USB调试」和「无线调试」
- 在Windows命令行执行
adb connect [手机WiFiIP]:5555(手机WiFiIP可在设置-关于手机-状态信息中查看)
- 在Windows命令行执行
- 重复方案2的步骤3-4,手机即可通过
localhost:xxxx访问服务
- 重复方案2的步骤3-4,手机即可通过
内容的提问来源于stack exchange,提问作者Girl
相关产品推荐
相关产品推荐

