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

Python Socket发送GET请求无数据返回,求问题原因与解决方法

问题:Socket请求目标链接返回空输出

目标链接http://data.pr4e.org/intro-short.txt有效,以下是编写的Python代码:

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\n\n'.encode('utf-8')

while True:
    data = mysock.recv(512)
    if(len(data)) < 1:
        break
    print(data.decode())
mysock.close()

期望代码获取该链接文件数据、解码后输出文本内容及响应头,代码无语法错误,但始终返回空输出。尝试过添加/移除www.、在终端而非VSCode运行,结果均一致。请问为何socket无法返回数据?


解答

问题核心是你只定义了请求命令,但没有将其发送给服务器。Socket建立连接后,必须主动调用send()方法把请求传递给服务器,服务器才能接收请求并返回响应。你的代码缺少了mysock.send(cmd)这关键一步,导致服务器完全没收到请求,自然不会返回任何数据,程序最终因无数据可接收而输出为空。

修正后的代码如下:

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\n\n'.encode('utf-8')
mysock.send(cmd)  # 新增该行发送请求

while True:
    data = mysock.recv(512)
    if(len(data)) < 1:
        break
    print(data.decode())
mysock.close()

运行修正后的代码,即可正常获取服务器返回的响应头和文件内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:25:05