Skip to content
C# Shell
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
our-state store Torrent data externally for easier access Mar 17, 2017
test-peer Use Python to resolve symlinks when interpreting BASH_SOURCE to make … Mar 12, 2017
.gitattributes Add .gitignore and .gitattributes. Feb 3, 2017
.gitignore Start working on subcommand parsing and new command-line dev tools. Mar 11, 2017
.gitlab-ci.yml Ferro->Ditto update in Markdown files and test-peer scripts Mar 12, 2017
Ditto.sln Ferro->Ditto update in all C# files Mar 12, 2017
LICENSE Add Chris to copyright notice in license. Feb 5, 2017
install Use Python to resolve symlinks when interpreting BASH_SOURCE to make … Mar 12, 2017


Ditto is (going to be) a BitTorrent client written in C# with .NET Core by Jeremy Banks and Chris Ronning (see LICENSE).



  • Ditto.CLInterface
    The basic command-line user interface we're initially experimenting with.
  • Ditto.BitTorrent.Client
    The high-level programming interface for using BitTorrent, encapsulating all of the details.
  • Ditto.Common
    Utilities and simple data types that shared used by everthing else.
  • Ditto.PeerProtocol
    Implemenetation of BitTorrent's TCP peer protocol.
  • Ditto.DHT
    Client/read-only implementation BitTorrent's BEP-5 UDP Distributed Hash Table protocol.
  • Ditto.Tests
    Our tests.

Development Tips

Using dotnet in the shell (maybe with Visual Studio Code)

./install will install our dependencies (locally).

./ditto will build and run our main command-line application. Run it to see a description of available subcommands.

test/all runs whatever tests we have.

test-peer/start and test-peer/stop will start and stop our test rTorrent Docker image using data from ./test-peer/state/. Our example/test programs may require this peer or use it for bootstrapping. You can control it directly through the web interface at http://localhost:8042. If you want to commit updated data/state, you need to test-peer/stop && rm -rf ./test-peer/state/ && mv ./test-peer/active-state/ ./test-peer/state/.

Using Visual Studio

Since this assumes Windows, you won't be able to use the above commands by default. I suggest using Docker Toolbox to get a Docker instance running. In the Docker Command Prompt, copy and paste the commands from .\test-peer\start. This should get you set up with our test rTorrent/ruTorrent Docker image, using data from .\test-peer\data\. Once this is set up, I recommend Kitematic, a nice GUI that will let you start and stop the Docker image, manage ports, etc.

Beyond that, you'll want to set up your Docker instance's IP Address as a command line argument in Visual Studio. Once you do that, you can run it like normal or with the debugger without ill effect.

BitTorrent References

You can’t perform that action at this time.