Skip to content

Latest commit

 

History

History
30 lines (27 loc) · 1.82 KB

README.md

File metadata and controls

30 lines (27 loc) · 1.82 KB

rdt3.0plus

This is a network project which built an internet protocal from scratch using the "Stop-and-Wait" logic. rdt3.0plus (this project) is a reliable transportation layer protocal on top of UDP. It basically implements rdt3.0, but adds user-defined sender window (window size < 128) to achieve a pipelined speedup.

- API
This protocal provides 6 C/C++ functions:

  • rdt_socket()
  • rdt_bind()
  • rdt_target()
  • rdt_send()
  • rdt_recv()
  • rdt_close()

    Please refer to the two example test programs for detailed usages. Handshake: The suggested handshake method involves three function calls on both the server and the client's sides. Client/sender calls rdt_send() twice to send file size and name to the receiver, and the server/receiver, upon receive correct information from the sender, calls rdt_send() to indicate start of file transfer. Parameters: There are 3 parameters you can set before compilation:
    • PAYLOAD: maximum size of message in a data packet
    • TIMEOUT: timeout length
    • W: window size. Default is 5.

- How to compile?
simply use the "make" command. *Make sure that you have your server/client programs ready before the compilation. There are two default test server/client programs. If you've got your own programs, please replace the original ones with yours.

- How to run the program?
After compilation, there will be two executables generated, namely "tserver" and "tclient". You can use the following command to start server/client:

  • sh run-server.sh
  • sh run-client.sh
    Please make sure you have the directory /Store ready on the server side before running the program. Please always start server before client.