/cc-bittorrent-go

BitTorrent client that's capable of parsing a .torrent file and downloading a file from a peer.

Primary LanguageGo

progress-banner

This is a starting point for Go solutions to the "Build Your Own BitTorrent" Challenge.

In this challenge, you’ll build a BitTorrent client that's capable of parsing a .torrent file and downloading a file from a peer. Along the way, we’ll learn about how torrent files are structured, HTTP trackers, BitTorrent’s Peer Protocol, pipelining and more.

Note: If you're viewing this repo on GitHub, head over to codecrafters.io to try the challenge.

Steps

  • Decode bencoded strings

  • Decode bencoded integers

  • Decode bencoded lists

  • Decode bencoded dictionaries

  • Parse torrent file

  • Calculate info has

  • Piece hashes

  • Discover peers

  • Peer handshake

  • Download a piece

  • Download the whole file