The mktorrent package is required to build test code.
go install .
bittorrent-client <run>|<start>|<stop>|<remove>|<repair> [<add>|<info>|<parse> <path/to/file.torrent>]
- The following commands are supported:
- run: Run client in the foreground
- start: Run in the background
- stop: Stop working in the background
- remove: Remove a torrent from the client
- repair: Remove corrupted pieces of data
- add: Add a new torrent and select the files you want
- info: Display information about the torrent (total size, # of files, etc.)
- parse: Display the .torrent file parse tree
- Parses Bencoded .torrent files and tracker responses
- Supports Bencoding structured data for serialization
- Parses and implements the peer message protocol
- Downloads single or multi-file torrents
- Checks existing data on disk and picks up from where you left off
- Web UI displays logs and progress
- 3: Basic BitTorrent protocol (in progress)
- 23: Tracker Returns Compact Peer Lists
- Test more than one torrent at a time
- Send keepalives
- Remove multiple torrents at once
- Blacklist misbehaving peers
- Stream bitfield changes to client
- Persist number of bytes uploaded
- Colored output for parse subcommand
- Add and remove torrents without restarting
- User-specified logging level, paths for downloads, path for config file
- Use already-written bencode package to generate .torrent files (instead of pobrn/mktorrent)
- Better piece download strategies (rarest first)
- Better peer selection strategies (optimistic unchoking)
- Support the dictionary model for tracker responses listing available peers
- DHT
- Peer Exchange