The purpose of this project is to develop a client/server version of Project 1, a simulation of Remote Procedure Call communication (RPC).
The server will be multithreaded. The main server's thread takes care of the connection requests (establish rendezvous). The spawned client-helper threads will carry out the two-way communication with the clients. Most of the (already) implemented code will be on the server site.
On the client side, you will create the different types of client threads (passenger, counter-clerk, flight attendant, clock) that will execute concurrently. These clients will ask the main server's thread to establish a connection.
When the connection is accepted by the server, the main server thread will create another "client helper" thread that will carry out the two-way communication with the client thread. The client will ask the corresponding client helper thread to execute sequentially the methods that were implemented in Project 1 as part of the run method. Before each method can be executed, it will send the server a message containing its name and the method name/number to be executed. This can be implemented in different ways. One way (but not the only way) would be to use a switch-case structure. This is similar to the process of creating stubs in the client and server sites.
Note that each run method should contain at least 3 methods.
The very last possibility is to run client and server on two separate windows on the local machine.
However, you MUST also submit a readMe file that will clearly mention how the programs should be tested: how I am supposed to run the client site and how I am supposed to run the server site. Keep the hardcoding to the minimum.
An additional file that you need to submit is a sample of the output that your program creates. You should have some output on the client side as well (for example what the request is) while most of the output (following the story) will be on the server side.