Socket报错:WinError 10061目标计算机积极拒绝连接问题求助
报错原因
首先纠正代码命名错误:你标注为server.py的代码实际是客户端逻辑,你标注为「客户端Python文件」的代码实际是服务端逻辑,命名混淆是第一个易出错点。
具体报错触发原因如下:
- 服务端监听地址和客户端连接地址不匹配:你的服务端绑定的是网卡地址
192.168.0.197,仅会监听发往这个地址的请求,而客户端连接的是localhost(对应127.0.0.1本地回环地址),服务端没有监听127.0.0.1的9999端口,会直接拒绝连接请求。 - 启动顺序错误:如果没有先启动服务端代码,就直接运行客户端连接代码,9999端口没有程序在监听,也会触发该报错。
- 防火墙拦截:Windows防火墙默认会拦截未放行的端口监听请求,9999端口如果没有加白名单,也会导致连接被拒绝。
解决方法
- 修正代码命名和连接地址:
- 把你写的服务端逻辑代码重命名为
server.py,将绑定地址修改为0.0.0.0,即可监听所有网卡的请求,修改后服务端代码如下:
import socket server = socket.socket() # 绑定0.0.0.0监听所有网卡请求 server.bind(('0.0.0.0', 9999)) server.listen(3) print("Waiting for connections") while True: c, addr = server.accept() print("Connected with ", addr) c.send(bytes("Welcome to Tooper", "utf-8"))- 把你写的客户端逻辑代码重命名为
client.py,可根据使用场景选择连接地址:本地测试填127.0.0.1,同局域网其他设备连接填服务端设备的局域网地址192.168.0.197,示例如下:
import socket c = socket.socket() # 本地测试用这个 c.connect(('127.0.0.1', 9999)) # 同局域网其他设备连接用这个 # c.connect(('192.168.0.197', 9999)) - 把你写的服务端逻辑代码重命名为
- 调整启动顺序:先运行server.py,看到控制台输出
Waiting for connections后,再运行client.py即可正常连接。 - 放行防火墙规则:弹出Windows防火墙提示时,勾选允许专用/公用网络访问,或者手动在Windows Defender防火墙中添加入站规则,放行9999端口的TCP请求。
内容的提问来源于stack exchange,提问作者Om Parab
相关产品推荐
相关产品推荐

