/scala-torrent

A BitTorrent Client Written in Scala

Primary LanguageScalaMIT LicenseMIT

scala-torrent

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.

Progress

  • [✔] 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.