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

安卓Python客户端Socket连接VirtualBox内Python服务器失败如何排查?

无法连接的根本原因

你在虚拟机内拿到的10.0.2.15是VirtualBox默认NAT网络模式下的内部隔离IP,这个网段仅在VirtualBox内部生效,既不能被宿主机访问,也不能被同一Wifi下的安卓手机访问,因此安卓端请求该IP时会直接触发连接超时报错。

排查&解决步骤
  • 第一步:修改VirtualBox网络模式为桥接模式
    关闭运行的Ubuntu虚拟机,打开VirtualBox对应虚拟机的「设置」-「网络」页,将「连接方式」从默认的「NAT」改为桥接网卡,下方「界面名称」选择你电脑当前连接Wifi的无线网卡,保存设置后启动虚拟机。
  • 第二步:获取虚拟机的局域网可访问IP
    进入Ubuntu系统后,重新执行命令hostname -I,此时获取到的IP会和你的电脑、安卓手机处于同一Wifi网段(通常为192.168.x.x格式),这才是可以被外部设备访问的有效IP。
  • 第三步:修改Python服务器绑定规则
    原有代码仅绑定了旧的NAT内部IP,需要改为监听所有网卡请求,保证外部设备的连接能被接收:
    # 将原有绑定地址改为0.0.0.0
    socket_address = ('0.0.0.0', port)
    
    修改后重启Python服务器。
  • 第四步:放行Ubuntu防火墙端口
    Ubuntu默认的ufw防火墙会拦截外部对10050端口的请求,执行以下命令放行端口:
    sudo ufw allow 10050/tcp
    
    临时测试也可以直接关闭防火墙:sudo ufw disable,验证连通后再配置规则即可。
  • 第五步:验证网络连通性
    先在安卓端测试和虚拟机的网络连通:可以用安卓终端模拟器ping第二步拿到的虚拟机IP,确认能ping通后,再测试10050端口是否开放,确认网络链路无问题。
  • 第六步:修改安卓端连接配置
    将安卓代码中的host_ip改为第二步拿到的虚拟机桥接模式IP,重新运行APP即可。
额外注意事项

如果操作完成后依然无法连接,检查你所用的Wifi是否开启了AP隔离(公共Wifi、部分路由器默认会开启该功能,禁止同一Wifi下的设备互相访问),可以切换为手机热点、家用私人Wifi再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:04