def dataReceived(self, data): """ 当数据接受到时 :param data: :return: """ self._read_buffer += data while self._read_buffer: # 因为box后面还是要用的 box = Box() ret = box.unpack(self._read_buffer) if ret == 0: # 说明要继续收 return elif ret > 0: # 收好了 self._read_buffer = self._read_buffer[ret:] safe_call(self._on_read_complete, box) continue else: # 数据已经混乱了,全部丢弃 logger.error( "buffer invalid. proxy: %s, ret: %d, read_buffer: %r", self.factory.proxy, ret, self._read_buffer ) self._read_buffer = "" return
def dataReceived(self, data): """ 当数据接受到时 :param data: :return: """ self._read_buffer += data while self._read_buffer: # 因为box后面还是要用的 box = Box() ret = box.unpack(self._read_buffer) if ret == 0: # 说明要继续收 return elif ret > 0: # 收好了 self._read_buffer = self._read_buffer[ret:] safe_call(self._on_read_complete, box) continue else: # 数据已经混乱了,全部丢弃 logger.error('buffer invalid. ret: %d, read_buffer: %r', ret, self._read_buffer) self._read_buffer = '' return
# -*- coding: utf-8 -*- import sys sys.path.insert(0, '../../') import socket from netkit.box import Box sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) box = Box() box.cmd = 1 # box.cmd = 101 box.body = '我爱你' sock.sendto(box.pack(), ('127.0.0.1', 9900)) while True: data, address = sock.recvfrom(1000) recv_box = Box() recv_box.unpack(data) print recv_box
# -*- coding: utf-8 -*- from netkit.box import Box box1 = Box() box1.body = '我爱你' print box1 print repr(box1.pack()) print box1.body buf = box1.pack() box2 = Box() for i in range(0, len(buf) + 1): tmp_buf = buf[0:i] if box2.unpack(tmp_buf) > 0: print box2 break
# -*- coding: utf-8 -*- from netkit.box import Box box1 = Box() box1.values = dict(uin=1, name=u'我') print box1 print repr(box1.pack()) print box1.body buf = box1.pack() box2 = Box() for i in range(0, len(buf)+1): tmp_buf = buf[0:i] if box2.unpack(tmp_buf) > 0: print box2 print box2.values break
# -*- coding: utf-8 -*- from netkit.box import Box box1 = Box() box1.body = '我爱你' print box1 print repr(box1.pack()) print box1.body box2 = Box() box2.unpack(box1.pack()) print box2 print box2.body print box2.magic