Let's imagine that we have 2 TCP clients. A simple one (modTCPClient.c) like the one you wrote in the first part of project 2 and another one (modTCPClient1.c) that after it connects to the server and before it starts exchanging data with the server it sleeps for a period of time - e.g. 45secs. Run the server (modTCPServer.c) and then connect the client that sleeps. Immediately after connect the "simple" client. What you will see is that the second client waits for the first to be served.
Let's imagine the same scenario but with 2 UDP clients. We have a simple UDP client (modUDPClient.c) and another one (modUDPclient1.c) that after it creates the socket it sleeps for an ammount of time before it starts sending data. Following the same procedure described above we will see that in this case, the client that sends data first is served first from the UDP server (modUDPserver.c).
In this project you are asked to implement the TCP server in such a way that the client that has to send data first will not have to wait for other clients that are already connected to the server to be served first.
Tip 1: Just modify the TCP server that you are being given above.
Tip 2: Use fork().