MonoTorrent 2.0.0-alpha.unstable.rev0017
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
See the version list below for details.
Install-Package MonoTorrent -Version 2.0.0-alpha.unstable.rev0017
dotnet add package MonoTorrent --version 2.0.0-alpha.unstable.rev0017
<PackageReference Include="MonoTorrent" Version="2.0.0-alpha.unstable.rev0017" />
paket add MonoTorrent --version 2.0.0-alpha.unstable.rev0017
#r "nuget: MonoTorrent, 2.0.0-alpha.unstable.rev0017"
// Install MonoTorrent as a Cake Addin #addin nuget:?package=MonoTorrent&version=2.0.0-alpha.unstable.rev0017&prerelease // Install MonoTorrent as a Cake Tool #tool nuget:?package=MonoTorrent&version=2.0.0-alpha.unstable.rev0017&prerelease
Warning
This release contains API breaking changes in comparison to MonoTorrent 1.x series. There may be further API breakages before 2.x is finalised.
General
Changes since previous alpha:
EngineSettings
andTorrentSettings
are now immutable objects. You can useEngineSettingsBuilder
andTorrentSettingsBuilder
to create a new Settings object from scratch, or to create one based on an existing Settings object. Once a new immutable Settings object has been created, you must callClientEngine.UpdateSettingsAsync
orTorrentManager.UpdateSettingsAsync
, as appropriate. The new settings will have been applied once the returned Task completes. If any listen ports are altered, and port forwarding is enabled, the old port will be unmapped and the new port will be mapped.Any EngineSetting associated with a TCP or UDP port can be set to '-1' to disable the feature, '0' to dynamically select any available port, or a specific port number to bind to. If '0' is specified and port forwarding is enabled, the dynamically bound port will be forwarded automatically.
Small tweak to use a low-allocation custom implementation of SemaphoreSlim built on top of ReusableTask. Reduces allocations by about 25%.
Improved how the PiecePicker allocates blocks from a single piece to multiple peers. The new approach is less proactive about assigning multiple peers to a single block, which in turn greatly improves the efficiency of Incremental Hashing without affecting download speeds. Recent experiments have shown that over 98% of pieces can be hashed without having to write the block to disk and read it back at a later point.
MonoTorrent now defaults to using a 5 megabyte memory cache for pieces which need to be written to disk. This further improves the efficiency of Incremental Hashing as blocks which are received out-of-order will be available in-memory rather than having to be read from disk.
Warning
This release contains API breaking changes in comparison to MonoTorrent 1.x series. There may be further API breakages before 2.x is finalised.
General
Changes since previous alpha:
EngineSettings
andTorrentSettings
are now immutable objects. You can useEngineSettingsBuilder
andTorrentSettingsBuilder
to create a new Settings object from scratch, or to create one based on an existing Settings object. Once a new immutable Settings object has been created, you must callClientEngine.UpdateSettingsAsync
orTorrentManager.UpdateSettingsAsync
, as appropriate. The new settings will have been applied once the returned Task completes. If any listen ports are altered, and port forwarding is enabled, the old port will be unmapped and the new port will be mapped.Any EngineSetting associated with a TCP or UDP port can be set to '-1' to disable the feature, '0' to dynamically select any available port, or a specific port number to bind to. If '0' is specified and port forwarding is enabled, the dynamically bound port will be forwarded automatically.
Small tweak to use a low-allocation custom implementation of SemaphoreSlim built on top of ReusableTask. Reduces allocations by about 25%.
Improved how the PiecePicker allocates blocks from a single piece to multiple peers. The new approach is less proactive about assigning multiple peers to a single block, which in turn greatly improves the efficiency of Incremental Hashing without affecting download speeds. Recent experiments have shown that over 98% of pieces can be hashed without having to write the block to disk and read it back at a later point.
MonoTorrent now defaults to using a 5 megabyte memory cache for pieces which need to be written to disk. This further improves the efficiency of Incremental Hashing as blocks which are received out-of-order will be available in-memory rather than having to be read from disk.
Dependencies
-
.NETStandard 2.0
- Mono.Nat (>= 3.0.1 && < 4.0.0)
- ReusableTasks (>= 2.0.0 && < 3.0.0)
Used By
NuGet packages (2)
Showing the top 2 NuGet packages that depend on MonoTorrent:
Package | Downloads |
---|---|
H.Runners.TorrentRunner
Allows you to download torrents.
|
|
BitTorrentStorage
Bit Torrent Storage
|
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on MonoTorrent:
Repository | Stars |
---|---|
Radarr/Radarr
A fork of Sonarr to work with movies à la Couchpotato.
|
|
lidarr/Lidarr
Looks and smells like Sonarr but made for music.
|
|
Readarr/Readarr
Book Manager and Automation (Sonarr for Ebooks)
|
Version History
Version | Downloads | Last updated |
---|---|---|
2.0.0-alpha.unstable.rev0193 | 31 | 4/3/2021 |
2.0.0-alpha.unstable.rev0192 | 49 | 4/2/2021 |
2.0.0-alpha.unstable.rev0167 | 59 | 3/18/2021 |
2.0.0-alpha.unstable.rev0147 | 62 | 3/13/2021 |
2.0.0-alpha.unstable.rev0132 | 66 | 2/25/2021 |
2.0.0-alpha.unstable.rev0123 | 65 | 2/20/2021 |
2.0.0-alpha.unstable.rev0122 | 39 | 2/18/2021 |
2.0.0-alpha.unstable.rev0112 | 66 | 2/17/2021 |
2.0.0-alpha.unstable.rev0107 | 50 | 2/10/2021 |
2.0.0-alpha.unstable.rev0037 | 124 | 12/19/2020 |
2.0.0-alpha.unstable.rev0031 | 84 | 12/18/2020 |
2.0.0-alpha.unstable.rev0017 | 97 | 12/10/2020 |
2.0.0-alpha.unstable.build1 | 112 | 12/7/2020 |
1.0.29 | 622 | 2/16/2021 |
1.0.28 | 1,142 | 11/25/2020 |
1.0.27 | 132 | 11/24/2020 |
1.0.26 | 127 | 11/24/2020 |
1.0.25 | 235 | 11/14/2020 |
1.0.24 | 981 | 8/12/2020 |
1.0.23 | 667 | 7/6/2020 |
1.0.22 | 3,015 | 5/26/2020 |
1.0.21 | 1,718 | 4/24/2020 |
1.0.20 | 637 | 4/13/2020 |
1.0.19 | 12,517 | 3/27/2020 |
1.0.18 | 1,143 | 3/16/2020 |
1.0.17 | 287 | 3/9/2020 |
1.0.16 | 255 | 3/3/2020 |
1.0.16-alpha | 237 | 2/5/2020 |
1.0.15 | 329 | 2/2/2020 |
1.0.14 | 204 | 1/30/2020 |
1.0.13 | 273 | 1/30/2020 |
1.0.12 | 301 | 1/16/2020 |
1.0.11 | 2,626 | 1/8/2020 |
1.0.10 | 495 | 12/11/2019 |
1.0.9 | 342 | 12/2/2019 |
1.0.9-beta | 223 | 11/28/2019 |
1.0.8 | 280 | 11/19/2019 |
1.0.7 | 285 | 11/2/2019 |
1.0.6 | 231 | 11/1/2019 |
1.0.5 | 247 | 11/1/2019 |
1.0.4 | 237 | 10/30/2019 |
1.0.3 | 307 | 10/16/2019 |
1.0.2 | 303 | 9/27/2019 |
1.0.1 | 326 | 9/6/2019 |
1.0.0 | 318 | 9/6/2019 |
0.99.136-beta | 229 | 9/6/2019 |
0.99.134-beta | 221 | 9/5/2019 |
0.99.119-alpha | 217 | 9/4/2019 |
0.9.0 | 8,693 | 6/10/2011 |