This is a simple BitTorrent client using Tokio. The client communicates with other clients using TCP. Currently only leeching is implemented. Piece picking is (mostly) sequential and an endgame mode is implemented.
- Endgame mode
- UDP trackers
- Multi-file torrents
- Seeding
- Periodically contacting the trackers
- Rarest-first piece picking algorithm
- FastPeers extension
- DHT (pipe dream)
- Unofficial specification: https://wiki.theory.org/BitTorrentSpecification
- UDP tracker protocol specs: https://github.com/steeve/libtorrent/blob/master/docs/udp_tracker_protocol.rst#request-string
- Guide - https://www.seanjoflynn.com/research/bittorrent.html
- Guide: https://blog.jse.li/posts/torrent/