@@ -42,15 +42,25 @@ def connect(server_address=None, timeout=0):
4242 sock .settimeout (timeout )
4343 return sock
4444
45- def send_msg (sock , type , data = bytearray ()):
46- type_bytes = bytes (type , 'utf-8' )
45+ def send_msg (sock , data_type , data = bytearray ()):
46+ def sendall (sock , data ):
47+ while len (data ) > 0 :
48+ try :
49+ ret = sock .send (data [:1048576 ]) #1MB chunks
50+ except :
51+ print ("Lost connection (send timeout)" , file = sys .stderr )
52+ exit ()
53+ if ret == 0 :
54+ print ("Lost connection (send null)" , file = sys .stderr )
55+ exit ()
56+ else :
57+ data = data [ret :]
58+
59+ type_bytes = bytes (data_type , 'utf-8' )
4760 type_size = len (type_bytes )
4861 msg = struct .pack (f'<B{ type_size } sI' , type_size , type_bytes , len (data )) + data
49- try :
50- sock .sendall (msg )
51- except :
52- print ("Lost connection" , file = sys .stderr )
53- exit ()
62+
63+ sendall (sock , msg )
5464
5565def recv_msg (sock ):
5666 def recvall (sock , n ):
@@ -59,17 +69,17 @@ def recvall(sock, n):
5969 try :
6070 packet = sock .recv (n - len (data ))
6171 except :
62- print ("Lost connection" , file = sys .stderr )
72+ print ("Lost connection (receive timeout) " , file = sys .stderr )
6373 exit ()
6474 if len (packet )== 0 :
65- print ("Lost connection" , file = sys .stderr )
75+ print ("Lost connection (receive null) " , file = sys .stderr )
6676 exit ()
6777 data .extend (packet )
6878 return data
6979 type_size = struct .unpack ('<B' , recvall (sock , 1 ))[0 ]
70- type = struct .unpack (f'<{ type_size } s' , recvall (sock , type_size ))[0 ]
80+ data_type = struct .unpack (f'<{ type_size } s' , recvall (sock , type_size ))[0 ]
7181 datalen = struct .unpack ('<I' , recvall (sock , 4 ))[0 ]
72- return str (type , 'utf-8' ), recvall (sock , datalen )
82+ return str (data_type , 'utf-8' ), recvall (sock , datalen )
7383
7484
7585
0 commit comments