我是Python新手(虽然我已经使用Java进行了多年的编程,但是我正在研究一个简单的基于套接字的网络应用程序(仅仅为了好玩))。我的想法是,我的代码连接到远程TCP端点,然后监听从服务器推送到客户端的任何数据,并对此执行一些解析。使用asyncore读取套接字缓冲区
从服务器 - >客户端推送的数据是UTF-8编码文本,每行由CRLF
(\x0D\x0A
)定界。你可能猜到了:这个想法是,客户端连接到服务器(直到被用户取消),然后读取和解析这些线路。
我已经设法让这个工作,但是,我不确定我是否以正确的方式来做这件事。所以因此我的实际问题(代码如下):
- 这是做在Python正确的方式(即是不是真的这样简单的)?
- 有关缓冲区/
asyncore
的任何提示/技巧/有用资源(除了参考文档)?
目前,该数据被读出并缓存的如下:
def handle_read(self):
self.ibuffer = b""
while True:
self.ibuffer += self.recv(self.buffer_size)
if ByteUtils.ends_with_crlf(self.ibuffer):
self.logger.debug("Got full line including CRLF")
break
else:
self.logger.debug("Buffer not full yet (%s)", self.ibuffer)
self.logger.debug("Filled up the buffer with line")
print(str(self.ibuffer, encoding="UTF-8"))
ByteUtils.ends_with_crlf
该功能简单地检查缓冲区\x0D\x0A
的最后两个字节。第一个问题是主要的问题(答案是基于此),但任何其他的想法/提示都值得赞赏。谢谢。
我很好奇ByteUtils在您的代码中的位置,所以我使用“python ByteUtils”...和谷歌给了我这个线程 - 创建15分钟后!这是令人印象深刻的:) – truppo 2009-11-26 18:23:59