Project Details:
You will explore basic socket programming, threading and GUI design using Java's network library, threading system, and swing user interlace libraries to implement a basic chat client and saver system. Thc system will allow multiple. remote users to send and receive messages across the network. On receiving a send message from a client the server component will broadcast the message to the other clients connected to the server Consequently, the server component must be multithreaded so as to coordinate communications between the client systems
Part A- Basic Requirements
The basic requirements of this assignment are to implement the client and setter components as discussed above. The basic protocol of the system is described below:
The operations of the client arc:
SEND_SERVER_MESG send a basic text message to the sever
RECV_ SERVER MESG: receive text from the server
The operations of the server are:
RECV_CUENT_MESG: receive text from a client
BROADCAST_MF.SG: broadcast a text message received from a client to all the other clients connected to the server.
The server component should be multithreaded and new threads should be allocated and de-allocated when clients connect and disconnect from the server. These threads can he thought of as connection handlers which manage a client socket and input, output streams. To keep track of these handlers some son of dynamic data structure such as a vector or similar data structure can he used to coordinate access to these message handlers. The client component should be implemented at a GUI interface, and should allow users to anti text messages, display broadcast messages from the server, and send messages using a send button.
Part B
I) Client registration (text file based, rather than database based, including usemarne and password)
2) Private messaging between users.
3) Blocking messages from specific users.
4) File or image transfer options.
5) Statistics functions for management at the server side (such as current users, total MSC'S, average time online, etc.).
6) Algorithms for efficient thread management.
Please make sure to include necessary unique comments in your source code and the GUI interfaces in case we have a doubt about the implementation Final marks depend on the quality, creativity and implementation of these extensions.