Network Program Implementation

Due: 10:00am, Thursday, December 14, 2023

Network Program Implementation – Chat Server

In this assignment you will develop a network chat application using stream sockets. The server will be a concurrent, connection-oriented multi-client chat server. The concurrent server can be implemented utilizing either processes or threads. The client will connect to the server to send chat messages to the other clients. The server will send messages received from a client to all connected clients, except for the originating client.

The client should accept the server’s hostname and the port number as command-line arguments (CLA). The server should accept a number as a command-line argument.

The server must be able to gracefully shutdown. If the server receives a CTRL-c to kill it, the server should send a message to all clients indicating it will be shutting down in x seconds, then wait x seconds and gracefully close. This should be done by using a signal handler for the SIGINT signal.

The recommended supported messages of this chat protocol are:

You may add additional messages to your protocol, which will be clearly developed and defined by the team. You may also change the messages above to better fit your developed protocol, but be sure to clearly document this in your readme file.

The chat protocol specifications are:

Readme File

Each team will create a readme file for their application. The readme file will include the following sections, at a minimum:

Files to Submit

To submit your assignment, create a zip file of a DIRECTORY named final-project containing the required files. Then submit that file to the appropriate folder on D2L.

The submission must include: