#dataAnalysis from Client
def dataAnalysis(self):
datafmt='<IIIIIIII'
#定义struct 解包格式,相当协议格式
fmtLen = struct.calcsize(datafmt)
#得到协议长度
while len(self._buffer) >= fmtLen:
print "Buffer Length:%s" % len(self._buffer)
(protocLength,) = \
struct.unpack('<I',self._buffer[:self.HEADERSIZE])
#取得协议体长度,协议体为protoc
print protocLength
if len(self._buffer) == fmtLen+protocLength:
#得到完整协议+协议体
HeadStr=self._buffer[:fmtLen]
#取出协议
ProtocStr=self._buffer[fmtLen:fmtLen+protocLength]
srcStr = struct.unpack(datafmt,HeadStr)
#解包协议格式
toIP = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
#取得IP地址,由整数转换成IP
print srcStr
print 'IP is',toIP(srcStr[6])
print '处理protoc'
print test1
self._buffer = self._buffer[fmtLen+protocLength:]
#分包
elif len(self._buffer) < fmtLen+protocLength:
print "Continue Received"
return
else:
print "Error"
self.transport.loseConnection()
return