#Server.py #!/usr/bin/env python3 import socket import time #define the size of header HEADERSIZE=10 #create socket obj s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #bind to a port s.bind(('0.0.0.0',1234)) s.listen(5) while True: #accept connection clientsocket, address = s.accept() print(f"conn from {address}") while True: # create msg the current time msg = f'The time is:{time.time()}' # :< means move string HEADERSIZE makes message looks like: 30 The time is:1571646543.0191066 msg = f'{len(msg):<{HEADERSIZE}}' + msg #send message clientsocket.send(bytes(msg,'utf-8')) print(msg) time.sleep(3)
#client.py #!/usr/bin/env python3 HEADERSIZE=10 import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1',1234)) full_msg='' 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.decode('utf-8') #if get full message print then reset message if len(full_msg)-HEADERSIZE == msglen: print(full_msg[HEADERSIZE:]) new_msg = True full_msg = ''