MonoTorrent is a cross platform and open source implementation of the BitTorrent protocol. It supports many advanced features such as Encryption, DHT, Peer Exchange, Web Seeding and Magnet Links. Notable features include: -Encryption -Dht -Peer Exchange (uTorrent style) -Local Peer Discovery -Web Seeding (getright style) -Magnet Links / Metadata download -IPV6 -FAST Extensions -Sparse files (NTFS file system) -Multi-tracker torrents -Compact tracker responses -IP Address white listing / black listing -Fast Resume -Initial Seeding (super seeding) -Selective downloading -Prioritised downloading -Full bittorrent tracker -Dynamic request queue size -Memory Cache -Endgame mode -Per torrent and global rate limiting -Individual file relocation


Keywords
.NET, bittorrent, c#, csharp, dht, dotnet, library, p2p, torrent, tracker, c-sharp, dotnet-standard, torrent-download, torrent-downloader, torrent-tracker
License
MIT
Install
Install-Package MonoTorrent -Version 3.0.0-beta.rev0159

Documentation

MonoTorrent

Nuget Nuget (with prereleases) Nuget

Build status (master) Test Status (master) code coverage (master)

Azure DevOps builds (branch) Azure DevOps tests Azure DevOps coverage (branch)

Azure DevOps builds (branch) Azure DevOps tests Azure DevOps coverage (branch)

Backers on Open Collective

Supported Specifications

This is a list of all the BEPs which have been implemented in MonoTorrent. A full list of all available BEPs can be seen here

Final/Active BEPs

Accepted BEPs

Draft BEPs

Others

Supported Client Features

The client downloads torrents and has a wide range of functionality.

  • Prioritise specific files.

  • Selective file downloading (including the ability to not download specific files).

  • Rarest first piece picking (takes priorisation into account).

  • End-game mode to boost the last 1-2% of the download.

  • Sequential downloading (for media files).

  • Per-torrent download/upload rate limiting.

  • Overall download/upload rate limiting.

  • In memory cache to reduce disk reads.

  • Auto-throttling if the download rate exceeds the piece verification/disk write rate.

  • IPV4 connections.

  • IPV6 connections.

  • IP address ban lists.

  • Creating torrents from a single file, a folder, or arbitrary files in arbitrary folders.

  • Fast resume data can be saved/restored to avoid hashing the data every time a torrent is started.

  • Incremental piece hashing (reduces disk reads by incrementally hashing each block in a piece as it is received).

  • Partial Hash Checking. If a TorrentFile has its Priority set to DoNotDownload then these files will be skipped when the hash check runs. If the priority is raised then the files will be automatically hash checked (if needed) before any piece is downloaded.

  • Sparse files (NTFS filesystem).

  • UPnP port forwarding.

  • NAT-PMP port forwarding.

  • Creating and using Magnet URI.

Supported Tracker Features

This is a standard bittorrent tracker server.

  • HTTP announce and scrape requests.
  • UDP announce and scrape requests.
  • Compact peer responses (reduces bandwidth)
  • Optionally allows unregistered torrents. In this mode the tracker will begin maintaining peer lists for a torrent as soon as the first announce request is received.

JetBrains

A special thank you to JetBrains for supplying a free license to their tooling so I can continue to deliver great features on this opensource project.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]