GoでBitTorrentクライアントをゼロから作る
(blog.jse.li)トラッカーベースのクライアント(DHT、マグネットなどは除く)の作成を段階的に説明
-
.torrentファイルの解析 -
ピアの発見
-
トラッカー応答の解析
-
ピアとペイロードを交換(Concurrency、Pipe Lining など)
トラッカーベースのクライアント(DHT、マグネットなどは除く)の作成を段階的に説明
.torrent ファイルの解析
ピアの発見
トラッカー応答の解析
ピアとペイロードを交換(Concurrency、Pipe Lining など)
4件のコメント
トレントを使いながらも、どうやって作るのか気になっていたのですが、とても良い情報をありがとうございます。
Torrent が最近でも違法用途以外で使われている場所はあるのかと思って検索してみたところ、
Twitter がサーバー配布用に使っていたオープンソースの Murder は、もうメンテナンスされていません。
https://github.com/lg/murder
Blizzard は大容量クライアントの配布に Torrent プロトコルを使っていましたが、それも 2015 年以降は廃止されています。
https://us.battle.net/forums/en/bnet/topic/16283439122
それでも Internet Archive がファイルのダウンロード用途で使っている例はありますね。
https://help.archive.org/hc/en-us/…
マイナーなLinuxベースのOSディストリビューションを入手するときにも、たまに役立ちます。
かなり多くのLinuxベースのOSは、Torrent経由でダウンロードできるオプションを提供していますが、
後になってそのOSの開発中止などの理由で直接ダウンロードできなくなった場合でも、
Torrentを通じてすでにダウンロードしてシードを維持しているほかのユーザーから受け取ることができるからです。
Go製のBitTorrentフルクライアントやライブラリは、このほかにもいくつかあります。
https://github.com/cenkalti/rain
https://github.com/anacrolix/torrent