读取SocketServer处理程序中的所有等待队列

2024-09-19 23:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个简单的socketserver示例,应该通过UDP接收一条线路并将其回显:

import socketserver

class LineHandler(socketserver.DatagramRequestHandler):
    def handle(self):
        line = self.rfile.readline().strip()
        print(line)

server = socketserver.UDPServer(('', 4444), LineHandler)
server.serve_forever()

但是,如果同时输入两行,则仅读取第一行:

(printf 'lol\n'; printf 'what\n') | nc -u localhost 4444

Tags: importself示例serverdefline线路class
1条回答
网友
1楼 · 发布于 2024-09-19 23:40:58

文档类型建议readline()将反复调用recv(),直到它得到一个换行符,这将在套接字的缓冲区中留下下一行,并导致再次调用handle()。但事实似乎并非如此

相反,您可以使用:

for line in self.rfile:
    line = line.strip()
    print(line)

相关问题 更多 >