#!/usr/bin/env python3 import socket import pickle HEADERSIZE=10 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('0.0.0.0',1234)) s.listen(5) d = {1:'1',2:'2'} #bytes msg= pickle.dumps(d) print(msg) msg = bytes(f'{len(msg):<{HEADERSIZE}}', 'utf-8') + msg while True: clientsocket, address = s.accept() print(f"conn from {address}") # create msg the current time # :< means move string HEADERSIZE makes message looks like: 30 The time is:1571646543.0191066 #send message print(msg) clientsocket.send(msg) print(msg)
#!/usr/bin/env python3 HEADERSIZE=10 import pickle import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1',1234)) full_msg=b'' new_msg = True while True: #recv longer than HEADERSIZE msg = s.recv(16) if new_msg: #new message, check len and keep get message msglen = int(msg[:HEADERSIZE]) new_msg = False full_msg += msg #if get full message print then reset message if len(full_msg)-HEADERSIZE == msglen: print(full_msg) d=pickle.loads(full_msg[HEADERSIZE:]) print(d) new_msg = True full_msg = b''