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

Android平台本地代理TCP Socket无法接收连接问题求助

解决Android平台本地代理Socket无法接收连接的问题

核心原因

Android应用沙箱机制下,127.0.0.1是应用进程的私有回环地址,仅能接收本应用内部的连接请求。而Wi-Fi全局代理的请求来自系统进程或其他第三方应用,无法访问你绑定的127.0.0.1端口。

解决方案

1. 修改Socket绑定地址为0.0.0.0

将监听地址从127.0.0.1改为IPAddress.Any(对应0.0.0.0),这样Socket会监听设备所有可用网络接口的请求,系统代理转发的连接就能正常到达:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定到所有网络接口,接收外部连接
socket.Bind(new IPEndPoint(IPAddress.Any, 8080));
socket.Listen(1000);
while (true)
{
    try
    {
        Socket accept = socket.Accept();
        // 处理连接逻辑
    }
    catch (Exception ex)
    {
        // 添加异常处理,避免循环中断
    }
}

2. 补充必要权限(针对Android 8.0+)

如果你的代理服务在后台运行,需添加前台服务权限,避免被系统回收:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

同时确保INTERNET权限已正确配置(你已添加,无需修改)。

3. 验证代理设置有效性

通过ADB命令确认系统代理是否正确生效:

adb shell settings get global http_proxy

返回127.0.0.1:8080则说明设置正确,若未返回,需重新配置Wi-Fi手动代理并重启Wi-Fi连接。

4. 检查定制ROM防火墙限制

部分国产定制ROM自带应用防火墙,可能禁止你的应用接收外来连接。进入系统设置的应用权限管理,确认你的应用已被允许联网及接收网络连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:03:07