Using C++/CLI Design and implement a reliable application-level…

Question Answered step-by-step Using C++/CLI Design and implement a reliable application-level… Using C++/CLIDesign and implement a reliable application-level protocol, capable of handling the following errors:Corrupted data: wrong part of a message (for example, text instead of number, wrong keyword etc.)Loss: missing part of a message (for example, an operand of the requested operation)Delay: a message or part of it (for example, the result of an operation) does not arrive in a “reasonable” time intervalTo be able to demonstrate handling of such errors, break the commands such as Add , Subtract < number>,Generate , QUIT  to parts. For example, instead of sending one message:Add send three messages:Addand simulate unreliable connection by sometimes sending a wrong operand or result (corrupted data), sometimes omitting or delaying an operand or result (loss or delay), with settable probabilities. For example, a correct operand is sent in 50% of the requests, but a wrong operand is sent in the other 50% of the requests; an expected operand or result is sent in 75% of requests, but omitted in 25% in the requests; an expected piece of data is sent with a significant delay in 25% of requests, etc. To facilitate easy testing, please allow the user to set these probabilities through the GUI of the client side of the application. To handle errors, you can use the ideas of Transport layer error-handling protocols (ACK/NAK or a NAK-Free), but you protocol does not need to be so generic. It can use application-level knowledge. For example, it will not be difficult for your server to determine that the corrupted data is the second operand of the requested operation and send a corresponding request for retransmission. Knowing the meaning of the possible responses to a message will help you handle corrupted responses.To handle loss and delay, your reliable protocol should use timeouts in a similar way as they are used at the Transport layer. To identify duplicates, you may or may not need to carry message sequence numbers – you may be able to utilize the application-level context of the message, but be careful to cover all possible situations. Computer Science Engineering & Technology C++ Programming Share QuestionEmailCopy link Comments (0)