# 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)