Bittorrent Client implementing BTP/1.0 plus select extensions (BEPs 0015, 0020, 0023, 0027)
- qBittorrent-inspired GUI written using Qt5
- Supports multiple simultaneous torrent downloads/uploads
- Supported extensions: UDP Tracker Protocol, Peer ID Conventions, Compact Peer Lists, and Private Torrents
- Bencode parser (implemented using iterator-based parsing)
- Asynchronous I/O (TCP and UDP networking) support using Boost Asio, with event handling aided by Boost Signals2
- HTTP tracker support using Boost Beast
- Multithreading support allows handling of multiple torrents, connections to peers, downloads/uploads, and GUI interaction to maximise network and file I/O performance
- Simple network scheduling using a token bucket to control bandwidth
- Real-time data updates including torrent, tracker, download progress, and network transfer information
- Real-time network transfer speed graph implemented using QCustomPlot plotting library
- Torrent filtering based on trackers and sorting using any of the columns
- User-configurable network settings (TCP/UDP ports, max/min peers, max download/upload speed)
- Logging to console implemented using Emil Ernerfeldt's Loguru library
- Torrent piece and info_hash SHA1 hashing implemented using Stephan Brumme's Hashing library
- Supports Windows 10.