Create a GUI application in Java that allows users to chat with each other over a network using sockets. The application should consist of two parts: a client and a server. The client GUI should have the following features: A text field where users can enter their messages A send button to send messages to the server A text area to display the conversation history A login screen to authenticate users The server GUI should have the following features: A start button to start the server A stop button to stop the server A text area to display the messages received from clients A list of currently connected clients The application should use sockets for communication and handle exceptions and errors gracefully. Additionally, the server should be able to handle multiple clients simultaneously.