As a personal challenge I decided to create a BitTorrent client in Scala. I chose this subject for two primary reasons:
- To explore new topics and problems aside from the iOS and web development projects I'm usually doing
- To gain more experience with Akka, as the subject is a good fit for the actor model
To make things more interesting, I do intend to only use the specification of the protocol and shall not study any existing implementation in any language.
- http://www.bittorrent.org/beps/bep_0003.html
- http://jonas.nitro.dk/bittorrent/bittorrent-rfc.html
- https://wiki.theory.org/BitTorrentSpecification
- [✔] CLI
- [✔] Bencode parsing and encoding
- [✔] Communication with tracker
- [✔] Modelling and (un)marshalling of the Peer Wire Protocol messages
- [✔] Connection and handshake with peers
- [TODO] File exchange
- [TODO] Actor supervision
- [TODO] Actor testing
At this point I am not planning on implementing extensions to the protocol such as DHT.