【发布时间】:2021-08-28 15:45:27
【问题描述】:
我目前正在使用 gevent 开发一个简单的 TCP 服务器。这是当前代码:
from gevent.server import StreamServer
SIZE = 1024
DISCONNECT_INPUT = "\q"
def clientSocket(socket, address):
print(f"[{address}] Connection established.")
socket.send(f"Welcome to the server. Type {DISCONNECT_INPUT} to exit.".encode())
dataList = []
while True:
message = socket.recv(SIZE).decode()
if message:
if message == DISCONNECT_INPUT:
print(f"[{address}] Client closed connection.")
break
else:
print(f"[{address}]: {message}")
dataList.append(message)
socket.send(message.encode())
else:
print(f"[{address}] Client disconnected.")
break
server = StreamServer(("127.0.0.1", 5000), clientSocket)
print("Listnening for connections...")
server.serve_forever()
连接处理得很好,但输入是按字符而不是按行接收的。例如,如果我通过 telnet 连接并尝试输入“这是一条消息”,服务器会接收并读取我输入的每个字符,而不是等待完整的内容。为了更好地说明我的意思:
这是在 telnet 上键入“这是一条消息”后服务器的样子:
这就是 telnet 窗口的样子:
(服务器是一个回显服务器,因此 telnet 看起来如此。)
我不知道究竟是什么原因造成的。这是 telnet 问题还是代码问题?
【问题讨论】:
-
您也可以添加您的客户端代码吗?
-
没有客户端代码,我是通过telnet连接的。