A multithreaded chat client
Now that we have a new, all receiving and broadcasting chat server, we just need a client to go with it. We have mentioned before that we will hit a problem with our procedural client when trying to listen for both network data and user input at the same time. Well, now that we have some idea of how to employ threads, we can have a go at addressing this. Create a new text file called 2.2-chat_client-multithread.py
and save the following code in it:
import sys, socket, threading import tincanchat HOST = sys.argv[-1] if len(sys.argv) > 1 else '127.0.0.1' PORT = tincanchat.PORT def handle_input(sock): """ Prompt user for message and send it to server """ print("Type messages, enter to send. 'q' to quit") while True: msg = input() # Blocks if msg == 'q': sock.shutdown(socket.SHUT_RDWR) sock.close() break try: tincanchat.send_msg(sock, msg) # Blocks until sent except...