twisted 中底层数据流控制
April 7th, 2009 by skysbird
最近在用twisted做数据手法中间件,感觉lineReceiver的方式不足以满足对底层数据传输时的精确控制,比如压缩,按位传输之类。
因此考虑使用比较底层的dataReceived时间,那么可能需要如下代码来拆包解包。
#!python
import struct
class Test:
def __init__ (self):
self.__buffer = ”
def dataReceived(self, data):
self.__buffer = self.__buffer + data
while len(self.__buffer) >= 4:
(length,) = struct.unpack(’I', self.__buffer[:4])
body = self.__buffer[4:4+length]
if len (body) == length:
self.onMessage (body)
self.__buffer = self.__buffer[4+length:]
elif len(body) < length:
print ‘Pack length not enough, wait for next receive’
break
else:
print ‘Error! Error! Error!’
assert False
print ‘Buffer length:’, len (self.__buffer)
def onMessage (self, msg):
print ‘onMessage:’, msg