A BitTorrent client for which I implemented a P2P protocol over TCP, making torrent downloading fully functional, and a DHT (Distributed Hash Table) from scratch, enabling decentralised peer search. It uses the Akka actor system for concurrency.
In the demo above we're downloading Sintel, an open-source film.
This is a fork of TheDom's project. They did the initial work up to Handshakes.
- [✔] Bencode
- [✔] Talk to HTTP trackers
- Peer Wire Protocol
- [✔] Message models & encoding
- [✔] Handshake
- [✔] TCP buffering
- [✔] Leeching
- [TODO] Seeding
- [✔] Pipelining
- [TODO] Piece selection strategies
- [TODO] Choking
- [✔] Reconstruct & persist files
- [✔] Talk to UDP trackers
- Distributed Hash Table (Kademlia)
- [✔] Message models & encoding (KRPC)
- [✔] Routing table
- [✔] Bootstrap nodes
- [✔] Search peers & nodes
- [TODO] Persist peer infos
- [TODO] Announce peer
- [✔] Manage known peers
- CLI
- [✔] Show progress
- [TODO] Choose torrent file
- [TODO] Choose magnet link