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

如何通过编程实现非局域网下Windows与Android设备的互联网连接

实现Android(移动数据)与Windows(以太网)跨网TCP连接方案

1. 修改Windows服务端绑定配置

当前服务端仅绑定localhost(本地回环地址),无法接收外部网络连接,需改为绑定所有可用网卡:

替换C#服务端的IP解析代码:

// 替换原localhost解析逻辑,绑定所有网卡的IP
IPAddress ipAddress = IPAddress.Any;
IPEndPoint ipEndPoint = new(ipAddress, 10090);

修改后服务端会监听所有网卡的10090端口,支持来自局域网和公网的连接请求。

2. 配置Windows防火墙放行端口

必须在Windows防火墙中添加入站规则,允许外部设备访问10090端口:

  • 打开「Windows Defender防火墙」→「高级设置」
  • 新建入站规则:选择「端口」→ 勾选TCP,指定端口10090
  • 选择「允许连接」,应用到所有网络类型(包括公网)

3. 配置路由器端口转发(核心步骤)

Windows设备处于局域网内,外部移动网络无法直接访问其局域网IP,需在路由器中设置端口转发,将公网端口映射到Windows设备的局域网IP和端口:

  • 登录路由器管理后台(通常地址为192.168.1.1或192.168.0.1)
  • 找到「端口转发」/「虚拟服务器」选项,添加规则:
    • 外部端口:10090
    • 内部IP:Windows设备的局域网IPv4地址(通过ipconfig命令查看)
    • 内部端口:10090
    • 协议:TCP

4. 修改Android客户端连接地址

  • 获取路由器的公网IP:可在路由器后台查看,或在Windows命令行执行curl ifconfig.me获取
  • 修改Android客户端的连接地址为你的公网IP,端口保持10090:
// 替换为实际公网IP,例如"112.34.56.78"
Socket socket = new Socket("你的公网IP", 10090);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(data);

5. 动态公网IP的应对方案(可选)

多数家庭宽带的公网IP是动态分配的,IP会定期变化,可使用动态域名解析(DDNS)解决:

  • 注册免费DDNS域名(如花生壳、No-IP)
  • 在路由器中配置DDNS,将公网IP自动绑定到域名
  • Android客户端连接时使用该域名代替公网IP,例如:
Socket socket = new Socket("your-ddns-domain.com", 10090);

额外注意事项

  • 部分移动运营商存在NAT限制,可能导致TCP连接失败,若遇到此类问题可尝试UDP协议或STUN/TURN打洞技术
  • 测试时确保Windows设备开机且网络正常,路由器端口转发规则已生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:20:29