我收到以下消息槽TCP:Python的消息分區錯誤
{"message": "Start", "client": "134.106.74.21", "type": 1009}<EOM>
但是當我試圖分區
msg.partition("<EOM>")
我發現了以下的數組:
('{\ x00 \ x00 \ x00「\ x00 \ x00 \ x00m \ x00 \ x00 \ x00e \ x00 \ x00 \ x00g \ x00s \ x00 \ x00 \ x00g \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00#x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00l x00 x00 x00l x00 x00 x00 x00 x00 x00; x00 x00 x001 x00 x00 x00; x00 x00 x000 x00 | x00 | x00 | x00 | x00 | x00 | x00 | x00 | x00 | x00 x00 x00 x00 x003 x00 x00 x004 x00 x00 x00。x00 x00 \ x001 \ x00 \ x00 \ x000 \ x00 \ x00 \ x006 \ x00 x00 x00 x00 x00 x004 x00 x00 x00。x00 x00 x100 x00 x00 x002 x00 x00 x005 x00 x00 x00: \ x00 \ x00 \ x00 \ x00 \ x00 \ x000 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00N \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00c \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00l \ x00 \ x00 \ x00e \ x00 \ x00 \ x00n \ x00 \ x00 \ x00t \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00「\ x00x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00。 \ x00 \ x00 \ x004 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 x00 x00 x00 x00 x00 x00 x00 x000 x00 x00 x000 x00 x00 x005 x00 x00 x00} x00 x00 x00 < \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00E \ x00 \ x00 \ x00 \ x00O \ x00 \ x00 \ x00M \ x00 \ x00 \ x00> \ x00 \ x00 \ x00 {「message」:「Start」,「client」:「134.106.74.21」, 「類型」:1009}」, '', '')
更新
try:
#Check if there are messages, if don't than throwing an exception otherwise continue
ans = self.request.recv(20480)
if(ans):
recv = self.getMessage(recv + ans)
else:
#Master client disconnected
break
except:
...
def getMessage(self, msg):
print("masg:" + msg);
aSplit = msg.partition("<EOM>")
while(aSplit[ 1 ] == "<EOM>"):
self.recvMessageHandler(json.loads(aSplit[ 0 ]))
#Get the new message id any
msg = aSplit[ 3 ]
aSplit = msg.partition("<EOM>")
return msg;
當我試圖添加兩個字符串時發生問題。
recv + ans
什麼是分區方法?我想可能是你的代碼的一部分(不是庫)。 –
這是一個內置函數:http://docs.python.org/library/stdtypes.html#str。分區 –