def run(self): """ 工作线程,接口并处理消息 """ # 连接服务器 if not self.is_connected(): if not self.connect(): print "[error]connect to server<", self.host, ':', self.port, '> failed.' return # 数据处理 while True: # 接收数据 try: message = Message() header = self._read(message.get_message_header_length()) message.parse_message_header(header) body_len = message.get_message_body_length() if body_len > 0: body = self._read(body_len) message.parse_message_body(body) else: message.parse_message_body() except Exception as e: print '[error]client read data failed.', e continue # 处理消息 try: message_body = message.get_message_body() if message_body is None: print '[error]message('+message.get_message_id()+") body is None!!!" continue self.handler.handle_message(message_body) except Exception, e: print '[error]handle message failed.', e break