#crc.py def c(d,g): d+='0'*(len(g)-1) D,G=list(d),list(g) for i in range(len(D)-len(G)+1): if D[i]=='1': for j in range(len(G)): D[i+j]=str(int(D[i+j])^int(G[j])) return ''.join(D[-(len(G)-1):]) #server.py import socket from crc import c s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('localhost',6000)) print("Server listening on 6000...") while True: data,addr=s.recvfrom(1024) m,cs=data.decode().split(',') if m.lower()=='exit': print("Client exit, shutting down.") break g=input("Enter generator (binary): ") cc=c(m+cs,g) print("Received message(CRC):",m+cs) print("Received checksum:",cs) print(f"Data from {addr} is {'valid' if all(i=='0' for i in cc) else 'invalid'}.") s.close() #client.py import socket from crc import c while True: m=input("Enter message (binary) or 'exit': ") if m.lower()=='exit': with socket.socket(socket.AF_INET,socket.SOCK_DGRAM) as x: x.sendto("exit,exit".encode(),('localhost',6000)) print("Exiting client.") break g=input("Enter generator (binary): ") cs=c(m,g) print("Checksum code:",cs) with socket.socket(socket.AF_INET,socket.SOCK_DGRAM) as x: x.sendto(f"{m},{cs}".encode(),('localhost',6000))