#select.select takes first a read list and a write list read_sockets, _, exception_sockets = select.select(sockets_list, [], sockets_list) for incoming_socket in read_sockets: if incoming_socket == venus_socket: vice_socket, vice_address = venus_socket.accept() client_data = receive_message(vice_socket) if client_data is False: continue sockets_list.append(vice_socket) vice_data[vice_socket] = client_data print("Message received") else: message = receive_message(incoming_socket) if message is False: print( f"Closed Connection from {vice_data[incoming_socket]['data'].decode('utf-8')}" ) sockets_list.remove(incoming_socket) del vice_data[incoming_socket] continue user = vice_data[incoming_socket] print(f"Received message from {user['data'].decode('utf-8')}") #Below here is where you place message handling/protocols/propogation if message['type'] == message_type.file_request: file_obj = vice_file.open(message['body']) elif (message['type'] == message_type.file_update): print(message['file_name'] + " has been changed ") # code to propagate changes and protocols