Implementing a Torrent Client (Draft)


  1. You will work on this final project in (Virtual) teams of two.
  2. It is Ok to ask your classmates & TAs about the existing codebase, but don’t ask about implementing seeding.
  3. People who implement malicious clients will automatically receive a zero.
  4. You must be connected to UVA VPN for this assignment.

Getting Familiar with the CodeBase:

As your final project, you will extend an open-source torrent to support sharing.  Your torrent client will seed your classmates and they will intern seed you. It is a fun way that we can all still be connected even though we currently quarantined.

The torrent client that you will be modifying was originally built by  Markus Eliasson. You can read about this implementation here. You can download Marks Implementation from Github here. Spend a copy of days getting familiar with the codebase.  Ask questions on piazza.  The client and download a torrent.

Implementing Seeding:

Mark’s implementation is incomplete.  In particular, it is missing the ability to seed other clients. As your final project, you will extend Mark’s Torrent client to support seeding.  We using MLDonkey that will always be seeding.

Grading Breakdown:

We have implemented a custom client that logs its interactions with other clients.  We will use this client to grade your project, so it important that 5 characters of your client start with your computing ID. (If you have computing ID that only contains 4 characters add an extra 0 (zero) at the end.  (Note this client will always be running so you can use it for testing)

  1. (20 points) Your client successfully connects to our client.
  2. (20 points) Your client successfully accepts a seed from our client.
  3. (30 points)  Your client successfully seeds a single block to our client.
  4. (30 points) Your client successfully seeds a multiple pieces to our client.

Testing & Development: 

Wireshark and a BitTorrent client, I recommend uTorrent. This off the self torrent client can act as your peer, the fun part is that as people complete the project you will see the peers popping up in your client.

Connecting Computer Networking Tracking Server.

I have set up a tracking server that you will use. And have created a torrent file that you will be download. The torrent file is available here: (File coming soon)

The Original Bittorrent Specification

For more details feel free to read the original bit torrent spec.

%d bloggers like this: