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

如何使用curl向17号端口发送请求获取QOTD服务响应?

解决QOTD服务器与curl请求问题

问题根源

你的Python服务器抛出的TypeError: a bytes-like object is required, not 'str'是核心原因:Python 3中socket.send()方法要求传入字节类型数据,但你传入的是字符串,导致服务器发送数据失败并直接关闭连接,这才引发curl的Connection reset by peer错误。

修复步骤

  1. 修改服务器代码:将发送的字符串转换为字节,使用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()
  1. 重启服务器:运行修改后的代码。

  2. 使用curl请求:执行curl 127.0.0.1:17,即可正常获取随机名言响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:36