UDP File Transfer

UDP is very different from TCP. We have to work with datagrams instead of streams & connections. It can be very fast (and unreliable), but there are many things that we have to do ourselves. Trying to think of a good (and interesting example), I decided upon building a simple file transfer application (over UDP) would be a nice place to start.

On /r/programming there was an interesting article about a new web protocol that Google is working on called QUIC. The tl;dr is that it's meant to replace TCP usage in some protocols, thus giving some speed improvements. Read the article here.

Before Starting

This program will be separated into two parts. The Sender and the Receiver. The Sender will act as the server (of sorts) that will transfer the files to the Receivers.

The code is going to cover synchronous, singled threaded usage of the UdpClient class. Friendly reminder that this is not a tutorial about UDP, but just how to use the APIs in C#. I'd recommend making a Google search or checking YouTube for some other resources that can explain UDP better on a theory level. The code is a lot more complex than I originally anticipated; but just as always, don't get discouraged.

Testing File

Seeing as we're dealing with file transfers, I think using the video Don't Copy That Floppy is the most appropriate test case here.