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)