Python socket.connect是否有更新形式?TCP客户端连接报错求助
问题解决:socket.connect连接失败及错误修正
错误原因
你遇到的socket.gaierror: [Errno -2] Name or service not known是域名解析失败导致的,核心问题有两个:
target_host变量里包含了http://前缀,socket进行域名解析时不需要协议头,只需要纯域名或IP地址- HTTP请求头里的
Host字段错误带上了http://,不符合HTTP协议规范
修正后的代码
import socket target_host = "www.google.com" # 移除http://前缀 target_port = 80 # 创建socket对象 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client.connect((target_host, target_port)) # 发送符合规范的HTTP请求 client.send(b"GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n") # 接收响应数据 response = client.recv(4096) print(response.decode()) client.close()
额外说明
- Python 3.10.5的
socket.connect()用法没有更新,你使用的双括号元组格式是完全正确的,问题出在域名和请求头的格式错误 - 如果后续连接自己搭建的TCP服务器,需确保:
- target_host是服务器的IP或可正常解析的域名(不要加协议前缀)
- 服务器端口处于监听状态,且防火墙允许该端口的TCP连接
内容的提问来源于stack exchange,提问作者Sample_Bit
相关产品推荐
相关产品推荐

