我通过 TCP 收到以下消息:
{"message": "Start", "client": "134.106.74.21", "type": 1009}<EOM>
但是当我试图分区时
msg.partition( "<EOM>" )
我得到以下数组:
('{\x00\x00\x00"\x00\x00\x00m\x00\x00\x00e\x00\x00\x00s\x00\x00\x00s\x00\x00\x00a\x00\x00\x00g\x00\x00 \x00e\x00\x00\x00"\x00\x00\x00:\x00\x00\x00\x00\x00\x00"\x00\x00\x00# \x00\x00\x00B\x00\x00\x00E\x00 \x00\x00G\x00\x00\x00I\x00\x00\x00N\x00\x00\x00;\x00\x00 \x00A\x00\x00\x00l\x00\x00\x00l\x00\x00\x00;\x00 \x00\x000\x00\x00\x00;\x00\x00\x001\x00\x00\x00;\x00\x00\x000\x00\x00\x00;\x00\x00\x001\x00\x00\x003\ x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x000\x00\x00\x006\x00\x00\x00.\x00\x00\x007\x00\x00\x004\ x00\x00\x00.\x00\x00\x001\x00\x00\x002\x00\x00\x005\x00\x00\x00:\x00\x00\x003\x00\x00\x000\x00\x00\x000\ x00\x00\x000\x00\x00\x000\x00\x00\x00;\x00\x00\x00#\x00\x00\x00E\x00\x00\x00N\x00\x00\x00D\x00\x00\x00" \x00\x00\x00,\x00\x00\x00\x00\x00\x00"\x00\x00\x00c\x00\x00\x00l\x00\x00\x00i\x00\x00\x00e\x00\x00\x00n\x00\x00\x00t\x00\x00\x00"\x00\x00\x00: \x00\x00\x00 \x00\x00\x00"\x00\x00\x001\x00\x00\x003\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x000 \x00\x00\x006 \x00\x00\x00.\x00\x00\x007\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x002\x00\x00\x005 \x00\x00\x00"\x00\x00\x00,\x00\x00\x00\x00\x00\x00"\x00\x00\x00t\x00\x00\x00y\x00\x00\x00p\x00\x00\ x00e\x00\x00\x00"\x00\x00\x00:\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x000\x00\x00\x005\x00\x00\ x00}\x00\x00\x00<\x00\x00\x00E\x00\x00\x00O\x00\x00\x00M \x00\x00\x00>\x00\x00\x00{“消息”:“开始”,“客户端”:“134.106.74.21”,“类型”:1009}','','')\x00\x00\x001\x00\x00\x003\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x000\x00\x00\x006\x00\x00\x00。 \x00\x00\x007\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x002\x00\x00\x005\x00\x00\x00"\x00\x00\x00 ,\x00\x00\x00\x00\x00\x00"\x00\x00\x00t\x00\x00\x00y\x00\x00\x00p\x00\x00\x00e\x00\x00\x00"\x00\x00\ x00:\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x000\x00\x00\x005\x00\x00\x00}\x00\x00\x00<\x00\x00 \x00E\x00\x00\x00O\x00\x00\x00M \x00\x00\x00>\x00\x00\x00{“消息”:“开始”,“客户端”:“134.106.74.21”,“类型”: 1009}', '', '')\x00\x00\x001\x00\x00\x003\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x000\x00\x00\x006\x00\x00\x00。 \x00\x00\x007\x00\x00\x004\x00\x00\x00.\x00\x00\x001\x00\x00\x002\x00\x00\x005\x00\x00\x00"\x00\x00\x00 ,\x00\x00\x00\x00\x00\x00"\x00\x00\x00t\x00\x00\x00y\x00\x00\x00p\x00\x00\x00e\x00\x00\x00"\x00\x00\ x00:\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x000\x00\x00\x005\x00\x00\x00}\x00\x00\x00<\x00\x00 \x00E\x00\x00\x00O\x00\x00\x00M \x00\x00\x00>\x00\x00\x00{“消息”:“开始”,“客户端”:“134.106.74.21”,“类型”: 1009}', '', '')\x00\x00\x00 \x00\x00\x00"\x00\x00\x00t\x00\x00\x00y\x00 \x00\x00p\x00\x00\x00e\x00\x00\x00"\x00\x00\x00 :\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x000\x00\x00\x005\x00\x00\x00}\x00\x00\x00<\x00\x00\ x00E\x00\x00\x00O\x00\x00\x00M \x00\x00\x00>\x00\x00\x00{“消息”:“开始”,“客户端”:“134.106.74.21”,“类型”:1009 }', '', '')\x00\x00\x00 \x00\x00\x00"\x00\x00\x00t\x00\x00\x00y\x00 \x00\x00p\x00\x00\x00e\x00\x00\x00"\x00\x00\x00 :\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x000\x00\x00\x005\x00\x00\x00}\x00\x00\x00<\x00\x00\ x00E\x00\x00\x00O\x00\x00\x00M \x00\x00\x00>\x00\x00\x00{“消息”:“开始”,“客户端”:“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