You must provide a methodology, design, Java Implementation and results.
Step 1 (part 1 is TCP/UDP communication with multiple clients)
This project is an implementation of a TCP and an UDP client-server system, simulating multiple clients (At Most 10) with a single server. You must simulate at least 5 clients with one server.
The error correction policy of TCP must be implemented on the UDP connections, each client must support both interfaces, TCP and UDP, and support the error correction policies of TCP, including but not limited to.
1) The server can go down, the clients wait, all messages in progress will continue, as if they were not interrupted,
2) Messages that are sent to particular client must only go to that client.
3) A client can be shut down, once restored, will continue with the interaction to the server.
4) The server must record the number of clients that are currently connected.
5) There will be no data lost during the execution of the simulation, in either TCP or UDP
The message that is sent by the server to each client is
“This course presents the concepts and design of client-server and distributed systems. Protocols, inter-process communication principles, language issues, system architecture, concurrency, distributed resource management are among the topics discussed. The role of standards in client-server development and distributed systems is discussed, along with middleware, distributed objects, and applications.”
The client will return to the server:
1) The message sent
2) The client id
3) The type of connection
4) Time message received / Time message sent
Both the Server and the Client will maintain a log of transactions.
Note: It is probably obvious that you can't implement all the policies of error correction in the RFC for TCP, given this reality, note which polices you have implemented; you should implement at least 4.
Here are some responsibilities of TCP
1) Operation without no loss
2) Lost ACK
3) Lost Packet
4) Premature timeout
5) Stop and wait
6) Pipelined operations
8) Selective Repeat
Step 2 (Part 2) of the project (Performance simulation):
Record the time to send the message to each client and return the message, for a total time to send the message to all the clients, one a time.
Now change the message to a fragment of the message to each client.
Now place a load on each client randomly from 1 – 100%, the higher the load the slower the response, you can only send messages to loads less than 50%.
Provide a table of time for:
1) single full message, sent to each client sequentially,
2) fragment messages, sent to each client sequentially
3) multiple fragment messages, sent to each client multicast
4) number of clients and load from the distributed process test
The finished part 1 project will include the following
• A single file containing a methodology section and a detailed design for this problem.
• The Java Source code.
• The executables.
• Any other source files necessary to build your system.
• A detailed README file describing the use of the system for part 1.