如何使用curl向17号端口发送请求获取QOTD服务响应?
解决QOTD服务器与curl请求问题
问题根源
你的Python服务器抛出的TypeError: a bytes-like object is required, not 'str'是核心原因:Python 3中socket.send()方法要求传入字节类型数据,但你传入的是字符串,导致服务器发送数据失败并直接关闭连接,这才引发curl的Connection reset by peer错误。
修复步骤
- 修改服务器代码:将发送的字符串转换为字节,使用
encode()方法(推荐utf-8编码),关键代码修改如下:
# 替换原sock.send行 sock.send(f"{quote}\n".encode('utf-8'))
完整修复后的服务器代码:
import socket import random quotes = [ "Never do today what you can do tomorrow", "Nobody lies on the internet", "The cake is a lie" ] server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("0.0.0.0", 17)) # 绑定到17端口 server.listen(5) while True: sock, addr = server.accept() quote = random.choice(quotes) sock.send(f"{quote}\n".encode('utf-8')) # 字符串转字节后发送 sock.close()
重启服务器:运行修改后的代码。
使用curl请求:执行
curl 127.0.0.1:17,即可正常获取随机名言响应。
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

