Skip to content

vitobasso/scala-torrent

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scala-torrent

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.

demo gif 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.


Progress

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

About

A BitTorrent Client built with Akka actors

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 100.0%