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

跨双Wi-Fi网络的Python Socket编程求助:服务器与客户端分属不同IP

跨网络Python Socket通信实现方案

核心逻辑

服务器与客户端分属不同私网,无法直接通过私网IP通信,需借助公网IP+端口映射或内网穿透工具绕过NAT限制。

方案一:端口映射(适用于服务器侧有公网IP场景)

  • 确认公网IP:在Server(笔记本)上执行curl ifconfig.me获取router1的公网IP
  • 配置端口映射:登录router1的管理后台,添加映射规则:
    • 外部端口:选一个未被占用的端口(如12345)
    • 内部地址:Server的私网IP(如192.168.1.100)
    • 内部端口:Socket服务监听的端口(如8000)
  • 客户端代码修改:将连接目标改为公网IP+外部端口,示例:
    import socket
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 替换为你的公网IP和映射的外部端口
    client.connect(("123.45.67.89", 12345))
    client.send(b"Hello from Raspberry Pi")
    data = client.recv(1024)
    print(f"Received: {data.decode()}")
    client.close()
    
  • 服务器端代码:保持监听私网IP对应端口即可,示例:
    import socket
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 监听所有网卡的8000端口
    server.bind(("0.0.0.0", 8000))
    server.listen(5)
    print("Server listening...")
    conn, addr = server.accept()
    print(f"Connected by {addr}")
    data = conn.recv(1024)
    print(f"Received: {data.decode()}")
    conn.send(b"Hello from Server")
    conn.close()
    

方案二:内网穿透(适用于服务器侧无公网IP场景)

如果router1没有公网IP,用内网穿透工具绕过NAT,以frp为例:

  • 准备一台带公网IP的VPS作为frp服务端:
    1. 安装frps,配置frps.ini:
      [common]
      bind_port = 7000  # frp服务端监听端口
      
    2. 启动frps:./frps -c ./frps.ini
  • 在Server(笔记本)上配置frpc客户端:
    1. 安装frpc,配置frpc.ini:
      [common]
      server_addr = 你的VPS公网IP
      server_port = 7000
      
      [tcp_socket]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 8000  # Socket服务监听端口
      remote_port = 12345  # VPS上的映射端口
      
    2. 启动frpc:./frpc -c ./frpc.ini
  • 客户端(树莓派)连接VPS的[公网IP]:12345即可通信,代码同方案一客户端代码。

注意事项

  • 确保Server本地防火墙允许监听端口(如8000)通过,router1防火墙允许映射的外部端口(如12345)通过
  • 使用frp时,VPS防火墙需开放frps的bind_port和remote_port
  • 可先用telnet [公网IP] [外部端口]验证端口是否可达

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:03:37