如何为运行在同一台机器上的客户端与服务端设置不同的IP?
Socket 客户端与服务端配置不同本地IP的方案
本地环回地址段为127.0.0.0/8,该网段所有IP默认指向本机,无需额外配置物理网卡即可直接使用,你可以利用该特性快速实现两端IP差异化,也可以通过配置虚拟网卡使用非环回IP。
1. 环回网段快速配置方案(无需修改系统配置,Linux/macOS 直接可用)
服务端配置
绑定127.0.0.0/8网段下除127.0.0.1外的任意IP即可,示例代码:
import socket # 自定义服务端IP,可选127.0.0.2~127.255.255.254之间任意值 SERVER_IP = "127.0.0.2" SERVER_PORT = 8080 server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_sock.bind((SERVER_IP, SERVER_PORT)) server_sock.listen(5)
Windows 系统如果绑定失败,用管理员身份执行命令route add 127.0.0.2 mask 255.255.255.255 127.0.0.1即可开启对应IP的路由
客户端配置
连接服务端前先绑定同网段下另一个IP即可,示例代码:
import socket # 服务端绑定的IP SERVER_IP = "127.0.0.2" SERVER_PORT = 8080 # 自定义客户端IP,和服务端IP区分开即可 CLIENT_IP = "127.0.0.3" client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 端口传0代表让系统自动分配可用端口 client_sock.bind((CLIENT_IP, 0)) client_sock.connect((SERVER_IP, SERVER_PORT))
效果验证
服务端接受连接时打印的客户端地址将显示为你配置的独立IP:
conn, client_addr = server_sock.accept() print(client_addr) # 输出示例:('127.0.0.3', 54321)
2. 非环回IP配置方案(适用于需要跨设备访问的场景)
- 给本机添加虚拟网卡,为每张虚拟网卡分配不同的静态内网IP,例如
192.168.1.10、192.168.1.11 - 服务端绑定
192.168.1.10,客户端绑定192.168.1.11,用法和上述环回IP示例完全一致
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

