所以我正在研究一个Python IRC框架,并且我正在使用Python的socket
模块。我喜欢使用Twisted吗?不,不是。Python socket模块的问题
无论如何,我有一个无限循环读取和处理来自socket.recv(xxxx)
的数据,其中xxxx
在这种情况下真的无关紧要。我使用str.split("\r\n")
将收到的数据拆分为消息,并逐个处理它们。
我的问题是,我必须设置在socket.recv()
特定的“读取大小”来定义多少数据从套接字读取。当我收到一连串的数据时(例如,当我连接到IRC服务器并接收到MOTD.etc时),总会有一条消息跨越插槽的两个“读取”(即部分行被读入一个socket.recv()
其余的则在无限循环的下一次迭代中读取)。
我不能处理半收到的消息,我不知道是否有连破案的一种方式。在理想情况下,我会收到缓冲区中的所有内容,但它看起来不像socket
提供了一种方法。
任何帮助?
为什么另起炉灶?现在已经有很多解决方案可以做到这一点,Twisted恰好是最通用的。 – jathanism
为什么你不想使用Twisted? – dicato