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

Python Socket编程示例中替换'localhost'需使用什么IP地址

Socket通信中localhost替换规则与IP获取方法

localhost本质是本机环回地址的域名,对应IP127.0.0.1,仅支持客户端、服务端运行在同一台设备时使用,跨设备通信必须替换为服务端的实际可达IP,具体选择和获取方式如下:

场景对应IP选择规则

  • 本地同机调试:无需替换,直接保留localhost或填127.0.0.1即可,流量不经过物理网卡,仅在本机内部流转,适合开发阶段验证逻辑。
  • 同局域网跨设备访问(比如服务端跑在台式机,客户端跑在同WiFi下的笔记本、手机、硬件开发板):替换为服务端设备的局域网私有IP。
  • 跨公网访问(客户端和服务端不在同一局域网):替换为服务端的公网IP,家用宽带环境下需要在路由器配置8089端口的端口映射,云服务器直接使用控制台提供的公网IP即可。

IP地址获取方式

  • Windows设备查局域网IP:打开命令提示符执行ipconfig,找到当前联网网卡对应的「IPv4地址」字段,一般为192.168.x.x、10.x.x.x、172.16.x.x开头的地址。
  • macOS/Linux设备查局域网IP:打开终端执行ip addr(部分老版本系统用ifconfig),找到当前联网网卡下的inet对应的地址即为局域网IP。
  • 公网IP查询:在服务端设备上打开浏览器搜索“本机IP”,即可直接看到当前设备的公网出口IP。

关键注意点:如果需要允许外部设备连接服务端,bind()方法不能绑定localhost/127.0.0.1,否则服务端只会接收本机的连接请求,外部连接会被直接拒绝。需要监听所有网卡流量时直接填0.0.0.0即可,同时覆盖本机、局域网、公网的访问请求。

修改后的可跨设备访问代码示例

服务端代码

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定0.0.0.0监听所有网卡的8089端口
serversocket.bind(('0.0.0.0', 8089))
serversocket.listen(5) # 最大允许5个连接排队

while True:
    connection, address = serversocket.accept()
    print(f"收到来自{address}的新连接")
    # 自行补充数据收发逻辑
    connection.close()

客户端代码

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 将此处IP替换为前面查到的服务端实际IP,同机调试可填127.0.0.1
clientsocket.connect(('服务端实际IP', 8089))
# 自行补充数据收发逻辑

常见排错点

  • 跨设备连接超时优先检查服务端系统防火墙是否放开了8089端口的TCP入站规则。
  • 云服务器公网连接失败优先检查控制台安全组是否放开8089端口的访问权限。
  • 局域网连接失败确认两个设备连在同一个路由器下,且路由器未开启AP隔离功能。

内容的提问来源于stack exchange,提问作者Marsh Mellows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:18:17