我有一个简单的tornado应用程序,它从telnet客户端读取数据。 我使用基于TCPServer的处理程序来处理telnet会话(代码示例已简化)。在
class CliServer(TCPServer, LoggerMixin):
def __init__(self):
super(CliServer, self).__init__()
def handle_stream(self, stream, address):
#Some irrelevant code
self.stream.read_bytes(max_buffsize, callback=self._on_read, streaming_callback=None, partial=True)
def _on_read(self, data)
#process data
pass
处理程序在主IOLoop中注册:
^{pr2}$我想在从套接字读取任何数据块后立即接收它。此数据块将由“CliServer.\u on\u read callback”处理。在
我当前实现的问题是这种方法BaseIOStream.read斨字节以“\r\n”终止后立即向我提供数据,这对我来说太晚了。 例如,当telnet用户键入“ab\tc\n”时,将使用“ab\tc”数据调用一次“on”read回调,而不是使用每个字符('a'、'b'、'\t'、'c')调用4次。在
我做错什么了?在
telnet客户机默认为行缓冲模式,因此在用户按下enter之前不会发送任何内容。您可以使用telnet选项更改此模式:Send data over telnet without pressing enter
相关问题 更多 >
编程相关推荐