Reliable UDP File Transfer

Before this semester, I always thought I knew enough about networking and that taking the networking class would just bore me with details of various internet protocols. But, networking is a cornerstone of modern Computer Science and my peers who had taken the class had no negative feedback so I decided to brave my way through the class in hopes of expanding my understanding of networking. As the semester is almost over and I have just completed our final project I have realized how wrong I was. My previous experience with the Java Sockets API didn’t quite prepare me for what was going on under the hood. The C Sockets API is much less forgiving as are all things in C. I now have a much stronger grasp on the mechanics of networking and I know the details of all the modern networking protocols.

The final project for Networking I taught by Mostafa Ammar and Russell Clark involved designing and implementing a protocol for reliable file transfer over UDP sockets in C. I implemented the Go-Back-N ARQ protocol on top of UDP to provide reliability. Other than this my protocol is relatively straightforward. I created two separate applications, a client and a server. My implementation only supports one way transfer from the client to the server and only supports one client at a time. The minute details are available in the README in the below archive of the source. The code was developed on and should compile on standard Linux machines.

UDP File Transfer Source Code