Rss聚合
Posts
Comments

最近在用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

Trackback URI | Comments RSS

Leave a Reply

京ICP备05029144