您将要对通过TCP连接接收到的数据进行解码。 数据包很小,不超过100字节。 但是,当它们很多的时候,我会收到一些连接的包。 有防止这个的方法吗? 我在用蟒蛇
我已经试着分离数据包了。 我的来源如下。 数据包以stx字节开始,以etx字节结束。 stx之后的字节是分组长度。 (小于5的数据包长度无效。 )校验和是etx之前的最后一个字节。
德夫译码(数据) :
while True:
start=data.find(STX )
if start==-1: # nostxinmessage
pkt=' '
data=' '
布雷克
#stx found,next byte is the length
PK tlen=ord (数据[1] ) ) ) ) ) )。
# checkmessageendsinetx (PKT ken-1 ) or checksum invalid
if pktlen 5 or data[pktlen-1]!=etxorchecksum _ valid (data [ start : PK tlen ] )==False:
print 'Invalid Pkt '
data=data[start 1:]
连续
else:
pkt=data[start:pktlen]
data=data[pktlen:]
布雷克
返回数据,pkt
我就是这样用的
#流程报告
try:
是DATA=sock.recv(256 )
except: continue
else:
while data:
数据,PKT=解码(数据)
if pkt:
是处理(PKT )
另外,在数据流中有多个包情况下,优选将这些包作为列表的集合返回,还是仅返回最初的包
我对python不太熟悉,只有c,用这个方法可以吗? 任何建议都是最受欢迎的。 早点谢谢
谢谢