Educational implementation of a simple BiTtorrent client, following this great guide: https://blog.jse.li/posts/torrent/. It is capable of downloading a single file torrent.
Multiple aspects of the protocol are missing: multi file torrents, trackers announce-list, seeding, etc.
What I worked with:
- HTTP with reqwest
- TCP streams
- byte manipulation
- multithreading with tokio
- shared memory with Arc<Mutex<>>
- MPSC channels
- serde and serde_bencode
To see it in action:
cargo run assets/debian.torrent