Re:Building a BitTorrent client from the ground up in Go
by eat_veggies on Saturday January 04, 2020 @06:24PM
(#21958375)
Over the holidays, I challenged myself to learn Go by torrenting the Debian ISO -- from scratch. This post is a bit of a brain dump about everything I've learned over the past week.
[ Parent
| on HN ]
Re:Building a BitTorrent client from the ground up in Go
by giancarlostoro on Saturday January 04, 2020 @07:29PM
(#21958717)
> This isn’t the full story
> For brevity, I included only a few of the important snippets of code. Notably, I left out all the glue code, parsing, unit tests, and the boring parts that build character. View my full implementation if you’re interested.
Any chance you'll do independent write ups to cover all the missing bits? Especially the ones that build character. :)
Re:Building a BitTorrent client from the ground up in Go
by devnullbyte on Sunday January 05, 2020 @04:58AM
(#21960558)
Would also be good to include how BT uses a merkel tree, that's quite a key component in the software.
Re:Building a BitTorrent client from the ground up in Go
by smabie on Sunday January 05, 2020 @05:40AM
(#21960658)
Does any client support the new standard? I was under the impression that no one did.
Re:Building a BitTorrent client from the ground up in Go
by anacrolix on Sunday January 05, 2020 @05:34PM
(#21964653)
It doesn't until the second version, which isn't mainstream.
Re:Building a BitTorrent client from the ground up in Go
by mixmastamyk on Sunday January 05, 2020 @03:36AM
(#21960329)
Wow, I've been looking for a BT tutorial at about this level of abstraction for two years or so. And would have liked to have read it a decade or two back as well.
Wondering if there are any similar docs or a book for implementing a server in Python, and a client in Python or Dart/Flutter? I know libtorrent bindings are a thing but the docs seemed quite dense and I didn't even know where to start—until now that is.
Re:Building a BitTorrent client from the ground up in Go
by peterkelly on Sunday January 05, 2020 @08:45AM
(#21961210)
Here's a pretty good one in JavaScript: https://allenkim67.github.io/programming/2016/05/04/how-to-m...