Python Socket客户端与服务器无法建立连接问题求助
Python Socket 连接超时问题排查与解决
问题场景
开发基于Python Socket的简单数据传输程序时,服务器与客户端无法建立连接,客户端抛出超时错误。
服务器代码
import socket addr = ('0.0.0.0', 8080) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_socket.bind(addr) server_socket.listen() print("Server is listening on port", addr[1]) client_socket, client_address = server_socket.accept() print("Connected to", client_address) data = client_socket.recv(1024) print("Received:", data.decode('utf-8')) client_socket.close()
客户端代码
import socket addr = ('my_ip', 8080) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket: client_socket.connect(addr) message = "Hello, server!" client_socket.sendall(message.encode('utf-8')) print("Data sent to the server")
报错信息
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
排查与解决步骤
- 修正客户端目标地址
- 同机测试:将
my_ip替换为127.0.0.1或localhost; - 局域网测试:替换为服务器的局域网IP(如
192.168.1.100); - 公网测试:替换为服务器公网IP,同时确保服务器8080端口已在防火墙/安全组开放。
- 同机测试:将
- 确保启动顺序正确
先运行服务器脚本,待控制台输出"Server is listening on port 8080"后,再启动客户端。 - 检查防火墙拦截
- 本地:临时关闭Windows防火墙或第三方安全软件测试,或添加允许Python程序访问网络的规则;
- 云服务器:在安全组中添加入站规则,开放TCP协议的8080端口。
- 验证端口占用情况
- Windows执行命令:
netstat -ano | findstr :8080,查看是否有其他进程占用8080端口; - Linux/macOS执行命令:
lsof -i :8080,若端口被占用则更换为未被使用的端口(如8081)。
- Windows执行命令:
内容的提问来源于stack exchange,提问作者CodeMaven42
相关产品推荐
相关产品推荐

