如何将Android应用与XAMPP本地服务器及Ubuntu端口4212服务连通?
解决Android应用访问WSL Ubuntu中4212端口服务的问题
这个问题我做跨设备调试时也碰到过,核心原因是WSL的localhost和Android设备的localhost不属于同一网络节点,而且默认情况下WSL里的服务只绑定了本地回环地址,外部设备根本没法访问。下面一步步给你解决:
1. 修改WSL服务的监听地址
首先得让Ubuntu里的服务监听0.0.0.0而非127.0.0.1。127.0.0.1只能接受WSL内部的请求,改成0.0.0.0就允许局域网内的其他设备(包括你的Android手机)连接了。
给你几个常见语言的修改示例:
- Python Socket:
import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 把这里的'127.0.0.1'替换成'0.0.0.0' server_socket.bind(('0.0.0.0', 4212)) server_socket.listen(1) - Node.js:
const http = require('http'); const server = http.createServer((req, res) => { res.end('Hello from WSL!'); }); // 监听0.0.0.0:4212 server.listen(4212, '0.0.0.0', () => { console.log('Server running on port 4212'); });
修改完记得重启你的服务。
2. 获取WSL的局域网IP地址
在Ubuntu终端里执行这条命令,就能拿到WSL在当前局域网中的IP:
hostname -I
输出会是类似192.168.3.15的地址,把这个IP记下来。
3. 配置Windows防火墙允许4212端口入站
Windows防火墙默认会阻止外部设备访问WSL的端口,得添加一条放行规则:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」,点击下一步
- 选中「TCP」,指定特定本地端口为
4212,点击下一步 - 选择「允许连接」,点击下一步
- 勾选「域」「专用」(如果用的是公用网络也可以按需勾选),点击下一步
- 给规则起个好记的名字(比如「WSL 4212端口访问」),完成配置
4. 确保Android设备和主机在同一局域网
你的手机必须和运行WSL的电脑连同一个WiFi(用USB共享网络也行,但WiFi更方便),这样两者才能在同一个局域网内通信。
5. 修改Android应用的请求地址
把App里原来的127.0.0.1:4212替换成刚才获取的WSL局域网IP,比如192.168.3.15:4212,重新打包测试就行。
额外排查小技巧
- 先在主机浏览器里访问
WSL_IP:4212,如果能正常响应,说明服务和防火墙配置没问题; - 如果还是不行,检查WSL的网络模式:WSL2默认是NAT模式,上面的步骤完全适用;要是WSL1,网络和主机共享,只要服务绑定0.0.0.0就基本没问题;
- 注意Android 9及以上默认禁止明文HTTP请求,要是你的服务用的是HTTP,得在
AndroidManifest.xml里添加android:usesCleartextTraffic="true",或者直接配置HTTPS。
内容的提问来源于stack exchange,提问作者Jay1995
相关产品推荐
相关产品推荐

