listen_sock = create_socket((host, PORT)) main_window = MainWindow() connection_list = [] connection_list.append(listen_sock) while True: # User.fileno() read_users, write_users, error_sockets = select.select( connection_list, [], []) for user in read_users: if user is listen_sock: # new connection, user is a socket new_socket, add = user.accept() new_user = User(new_socket) connection_list.append(new_user) main_window.welcome_new(new_user) else: # new message msg = user.socket.recv(Buffer_Size) if msg: msg = msg.decode().lower() main_window.handle_msg(user, msg) else: user.socket.close() connection_list.remove(user) for sock in error_sockets: # close error sockets sock.close() connection_list.remove(sock)