# client_server_chat # This is a program to demonstate a chat between client and server using UDP. # Run this program and add either client or server as an argument. # Once you have run both client and server you can chat between them. # by Scott Gordon with help from Educative.com import argparse, socket MAX_SIZE_BYTES = 65535 # Mazimum size of a UDP datagram def server(port): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) hostname = "127.0.0.1" s.bind((hostname, port)) print("Listening at {}".format(s.getsockname())) while True: data, clientAddress = s.recvfrom(MAX_SIZE_BYTES) message = data.decode("ascii") print("The client at {} says {!r}".format(clientAddress, message)) msg_to_send = input("Input message to send to client:") data = msg_to_send.encode("ascii") s.sendto(data, clientAddress) def client(port): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) host = "127.0.0.1" while True: s.connect((host, port)) message = input("Input message to send to server:") data = message.encode("ascii") s.send(data) data = s.recv(MAX_SIZE_BYTES) text = data.decode("ascii") print("The server replied with {!r}".format(text)) if __name__ == "__main__": funcs = {"client": client, "server": server} parser = argparse.ArgumentParser(description="UDP client and server") parser.add_argument("functions", choices=funcs, help="client or server") parser.add_argument( "-p", metavar="PORT", type=int, default=3000, help="UDP port (default 3000)" ) args = parser.parse_args() function = funcs[args.functions] function(args.p)
Photo by Kelvin Ang on Unsplash
Top comments (0)