Lightweight and fast torrent client with a modern interface written in C++
Basic information about the torrent client can be found in these posts:
- Building a BitTorrent client from the ground up in Go
- A BitTorrent client in Python 3.5
- Building a BitTorrent client from scratch in C#
Information about bittorrent protocol you can find in unofficial documentation or official.
- Visual Studio 2022 or Rider 2022.3.X (not strictly required, however included setup scripts only support this).
- Vulkan SDK (preferably a recent version).
- Logging: spdlog
- Building: premake5
- UI: my fork of Walnut
- FileDialog: my fork of ImGuiFileDialog
- Networking: boost
- Http requests: cpr
- Clone the repository with all submodules (and submodules of submodules) using the method you choose.
- Install non submodule dependencies(cpr, boost).
- Once you've cloned and init all submodules, run
scripts/Setup.bat
to generate Visual Studio 2022 solution/project files. - Now the project is ready to work with.
You can download and install cpr and boost using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
./vcpkg install boost
The current implementation of this Torrent client only supports the following features:
- Parsing .torrent file
- Retrieving a list of peers from the tracker.
To make it an actual usable Torrent client, it will have to include:
- Downloading single-file torrents in a multi-threaded manner(Work in progress at Dev branch).
- Seeding
- Resuming a download.
- Downloading multi-file torrents
- Downloading multiple torrents at once
- All UI stuff, now only file selection are implemented
Initially, I planned to implement UI via IPC with an application written in python using PyQt.Then I couldn't imagine how stupid it was :), but if you would be interested to see such a monster, welcome to the old repository of this project.