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

Python TCP Socket客户端与服务端无法连接报错求助

问题根因
  • 混淆了TCP服务端两类套接字的作用:serverSocket是监听专用套接字,仅负责响应客户端的连接申请,不能用于收发已连接客户端的业务数据
  • accept()方法返回的clientSocket才是与当前客户端绑定的已连接套接字,所有和该客户端的数据交互都必须通过这个套接字完成
  • TCP是面向连接的传输协议,无需使用UDP专用的recvfrom()方法,直接调用recv()接收数据即可,也不需要额外获取地址返回值
修正后代码

server.py

from socket import *
serverPort = 11500
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))

print("The server is listening")
serverSocket.listen(1)

# 接收客户端连接,获取通信专用套接字
clientSocket, clientAddress = serverSocket.accept()
print(f"已和客户端{clientAddress}成功建立连接")

# 通过已连接套接字接收数据
message = clientSocket.recv(2048)
print(f"收到客户端发送的消息:{message.decode()}")

# 回收资源
clientSocket.close()
serverSocket.close()

client.py(可选优化,原有逻辑无错误,补充资源回收即可)

from socket import *

serverName = "127.0.0.1"
serverPort = 11500

clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))

message = "Hello"
clientSocket.send(message.encode())

clientSocket.close()
验证方法
  1. 先在终端运行修改后的server.py,会打印监听提示
  2. 再开启新终端运行client.py,server端会正常输出收到的Hello消息,无报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:15:05