@@ -61,21 +61,27 @@ def disconnect(self):
6161 if self .recv_thread :
6262 self .recv_thread .join (timeout = 2 )
6363
64- def send_message (self , message , packet_type = PacketType . CMD , flag1 = 0 , flag2 = 0 ):
64+ def send_message (self , message , packet_type , flag1 = 0 , flag2 = 0 ):
6565 """发送消息到服务器"""
6666 if not self .connected :
6767 print ("未连接到服务器" )
6868 return False
6969
7070 try :
71+ # 确保消息为字节类型
72+ if isinstance (message , str ):
73+ message_bytes = message .encode () # 使用系统默认编码
74+ else :
75+ message_bytes = message
76+
7177 # 计算数据长度
72- data_len = len (message . encode ( 'utf-8' ) )
78+ data_len = len (message_bytes )
7379 # 构建数据包
7480 header = struct .pack ('!IBBBB' , data_len , 0x01 , packet_type .value , flag1 , flag2 )
7581 # 发送数据包
7682 with self .lock :
7783 self .socket .sendall (header )
78- self .socket .sendall (message . encode ( 'utf-8' ) )
84+ self .socket .sendall (message_bytes )
7985 return True
8086 except Exception as e :
8187 print (f"发送消息失败: { e } " )
@@ -84,7 +90,7 @@ def send_message(self, message, packet_type=PacketType.CMD, flag1=0, flag2=0):
8490
8591 def send_message_and_wait_for_reply (self , message , timeout = 5 ):
8692 """发送消息并等待回复"""
87- if not self .send_message (message ):
93+ if not self .send_message (message , PacketType . CMD ):
8894 return None
8995
9096 try :
@@ -96,11 +102,11 @@ def send_message_and_wait_for_reply(self, message, timeout=5):
96102
97103 def post_message (self , message ):
98104 """发送异步消息"""
99- return self .send_message (message )
105+ return self .send_message (message , PacketType . CMD )
100106
101107 def post_no_rep_message (self , message ):
102108 """发送无返回异步消息"""
103- return self .send_message (message )
109+ return self .send_message (message , PacketType . CMD )
104110
105111 def ping (self , timeout = 2 ):
106112 """Ping服务器"""
@@ -114,7 +120,7 @@ def ping(self, timeout=2):
114120 def register_status_change (self , status_name , module_name , callback = None ):
115121 """注册状态变化通知"""
116122 cmd = f"{ status_name } @{ module_name } -><register>"
117- success = self .send_message (cmd )
123+ success = self .send_message (cmd , PacketType . CMD )
118124 if success and callback :
119125 with self .lock :
120126 self .status_callbacks [(status_name , module_name )] = callback
@@ -123,7 +129,7 @@ def register_status_change(self, status_name, module_name, callback=None):
123129 def unregister_status_change (self , status_name , module_name ):
124130 """取消注册状态变化通知"""
125131 cmd = f"{ status_name } @{ module_name } -><unregister>"
126- success = self .send_message (cmd )
132+ success = self .send_message (cmd , PacketType . CMD )
127133 if success :
128134 with self .lock :
129135 key = (status_name , module_name )
@@ -153,8 +159,8 @@ def _receive_thread(self):
153159 # 解析包头
154160 data_len , version , packet_type , flag1 , flag2 = struct .unpack ('!IBBBB' , header )
155161
156- # 接收数据
157- data = self ._receive_all (data_len ). decode ( 'utf-8' )
162+ # 接收数据(保持字节类型)
163+ data = self ._receive_all (data_len )
158164
159165 # 处理不同类型的数据包
160166 if packet_type == PacketType .RESP .value :
0 commit comments