A 2004 (final year) project by Marlon Paulse and myself, implementing the Trivial FTP (TFTP) protocol. We wrote a layered network stack on top of raw UDP in C to provide session and application layers. The resulting client and server programs could serve files over the network and interoperate with existing TFTP servers. We developed a finite state machine representation of TFTP, which made for a neat implementation.
I have attached a zip-file of the project below. The code of our project is Copyright 2004 Graham Poulter and Marlon Paulse: you will need permission from one of us to do anything with it. For a "real" tftp server, use the one from GNU inetutils.