/TorrentSwifter

A simple BitTorrent library completely in C# compatible with .NET Standard 2.0

Primary LanguageC#MIT LicenseMIT

TorrentSwifter

Description

This is just a toy project of mine for learning more about the BitTorrent protocol. Basic support for leeching and seeding torrent files exists, but the project is nowhere close to being ready for consumers in the current state.

The project is developed using Visual Studio and is compatible with .NET Standard 2.0 so it should work cross-platform, although it has only been tested on Windows.

I am also reserving rights to break backwards-compatibility if needed, until a more stable version is reached.

Also note that the CLI is extremely basic and has only been used for basic testing.

TODO

BEP

  • The BitTorrent Protocol (BEP 3)
  • UDP Tracker Protocol (BEP 15)
  • Multitracker Metadata Extension (BEP 12)
  • Tracker Returns Compact Peer Lists (BEP 23)
  • Tracker Protocol Extension: Scrape (BEP 48)
  • IPv6 Tracker Extension (BEP 7)
  • Tracker Returns External IP (BEP 24)
  • Peer ID Conventions (BEP 20)
  • WebSeed (GetRight style) (BEP 19)
  • WebSeed (Hoffman-style) (BEP 17)
  • Local Service Discovery (BEP 14)
  • Fast Extension (BEP 6)
  • Extension for Peers to Send Metadata Files (BEP 9)
  • Extension Protocol (BEP 10)
  • Peer Exchange (BEP 11)
  • DHT Protocol (BEP 5)
  • Private Torrents (BEP 27)
  • uTorrent transport protocol (BEP 29)
  • Superseeding (BEP 16)
  • Extension for partial seeds (BEP 21)
  • Padding files and extended file attributes (BEP 47)
  • Torrent Signing (BEP 35)

Piece Selection

  • Random
  • Rarest first
  • Highly available first piece, then rarest first

Modes

  • Normal
  • End-game
  • Superseeding

Other

  • UPnP