【发布时间】:2021-10-09 21:12:57
【问题描述】:
我正在尝试解析 HTTP 请求行(例如 GET / HTTP/1.1\r\n),这很容易使用 socket.makefile().readline()(BaseHTTPRequestHandler 使用它),例如:
print sock.makefile().readline()
不幸的是,正如documentation 所说,当使用makefile() 套接字必须处于阻塞模式(它不能有超时);如何在不使用 makefile() 文件对象接口并且不读取超出需要的内容(因为它会丢弃我之后需要的数据)的情况下实现类似 readline() 的函数?
一个非常低效的例子:
request_line = ""
while not request_line.endswith('\n'):
request_line += sock.recv(1)
print request_line
【问题讨论】: