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

如何使用Python Socket连接不同WiFi网络下的两台电脑?

跨WiFi网络Python Socket连接失败解决方案

核心故障原因

  • 内网IP不可路由:你代码中填写的my ipv4如果是路由器分配的内网地址(192.168.x.x、10.x.x.x、172.16-31.x.x段),不同WiFi属于独立内网时,该地址无法被外部网络直接识别访问
  • 端口访问被拦截:服务端设备的系统防火墙、所在路由器的端口过滤规则,会拦截外部网络对21312端口的TCP连接请求
  • NAT穿透限制:两台设备都处于内网环境下,没有公网IP映射时,无法直接建立跨内网的TCP连接

解决步骤

  • 同运营商家庭网络场景:进入服务端所在WiFi的路由器管理后台,添加端口映射规则,将21312端口(TCP协议)映射到服务端设备的内网IP的21312端口
  • 替换连接IP:客户端代码中填写的目标IP要改为服务端网络的公网IP,可在服务端设备上直接查询公网IP获取
  • 放开端口限制:临时关闭服务端设备的系统防火墙测试连接,连通后再添加21312端口的TCP入站规则即可
  • 跨公网场景:使用内网穿透工具映射服务端端口,或使用公网服务器做消息中转

代码修复(原代码存在缩进错误,修正后可正常运行)

服务端代码

from socket import *

lista = ['computer']
s = socket(AF_INET, SOCK_STREAM)
port = 21312
# 0.0.0.0表示监听所有网卡的连接请求
s.bind(('0.0.0.0', port))
s.listen(5)

while True:
    for i in range(0, len(lista)):
        a = str(lista[i]).encode()
        c, addr = s.accept()
        print("CONNECTION WITH", addr)
        c.send(a)
        print(a)
        c.close()

客户端代码

import socket
from socket import *

port = 21312

while True:
    s = socket(AF_INET, SOCK_STREAM)
    # 此处替换为服务端的公网IP或内网穿透映射地址
    s.connect(('你的服务端公网IP', port))
    odebrana = s.recv(1024)
    decoded = odebrana.decode()
    print(decoded)
    s.close()

内容的提问来源于stack exchange,提问作者Michał Strugarek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:15:03