diff --git a/plugins/net.py b/plugins/net.py index afc72c2..4190634 100644 --- a/plugins/net.py +++ b/plugins/net.py @@ -70,32 +70,34 @@ class Netrecv: def process_connection(self, conn, addr): print('Connection accpet %s' % str(addr)) data = b'' + need_data = False while True: new_data = conn.recv(RECV_BUFF) # here needs to check whether the package is continued if not new_data: conn.close() return data += new_data - while True: + while True: # process sticky package dp = Datapack(check_head=False) dp.encode_data = data try: - data = dp.decode(only_head=True) - except Exception as e: + if not need_data: + data = dp.decode(only_head=True) + except Exception as e: # check head print('Decode error %s: %s' % (type(e), str(e))) print('Stop and start to receive more data') break length = int(dp.head['length']) - if length > len(data): + if length > len(data): # check body print('No enougth data, stop and start to receive') + need_data = True break + elif length == len(data): + need_data = False dp.body = data[:length] # get the body data = data[length:] dp.encode() - print(dp.body) print('---------------\n'+dp.encode_data.decode()+'\n---------------') - if not data: - break class Netlist: # contain net list and network controller diff --git a/test_file.py b/test_file.py index 4304272..c754b1b 100644 --- a/test_file.py +++ b/test_file.py @@ -1,28 +1,34 @@ import socket import time -data = '''post log msw/1.0 +data = '''file log msw/1.0 from: network flag: abcdefgh -num: 1/2 +num: 1/1 lengt''' -data2 = '''h: ''' +data2 = '''h: 9 -data3 ='''3 +123''' + +data3 ='''456789''' + +data4 = '''post log msw/1.1 +from: network +flag: 12345678 +num: 1/1 +length: 3 abc''' -data = data.encode() -data2 = data2.encode() -data3 = data3.encode() +data_list = [data, data2, data3,data4] +code_list = [] +for i in data_list: + code_list.append(i.encode()) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 3900)) -s.sendall(data) -time.sleep(1) -s.sendall(data2) -time.sleep(1) -s.sendall(data3) -s.close() +for i in code_list: + s.sendall(i) + time.sleep(1) \ No newline at end of file