というわけで、前回に引き続いて、この記事ではTorrentファイルについて説明します。
[Torrent file format]
前回、Bencodingを実装したのでTorremt Fileを読み込めることができるようになりました。
今回は、Torrentファイルから必要な情報を読み込む方法について解説します。
torretファイルから取得できる情報はどんなものかは、別の機会に解説します。
ここでは、torrentファイルには 2つのフォーマットがあることとデータ構造を説明します。
たとえば、「"announce"というデータが何なのか?」については解説しません。
torrentファイルでは、ダウンロード/アップロードの対象としているファイルが、ひとつの場合と複数の場合で構造がすこしだけことなります。
ひとつの時を、「single file」 複数の時を「multi file」と呼ぶことにます。
では、データ構造を紹介します。
- single file pattern
bendiction
benstring "announce"
beninteger "creation date"
bendiction "info"
beninteger "length"
benstring "name"
beninteger "piece length"
bebstring "pieces"
- multi file pattern
bendiction
benstring "announce"
beninteger "creation date"
bendiction "info"
benlist "files"
bendiction
beninteger "length"
benlist "path"
benstring
bendiction
..
..
..
beninteger "length"
benstring "name"
beninteger "piece length"
bebstring "pieces"
といった感じです。
multi file の時は、filesというDictionが追加されるわけです。
[reference]
- 成果物 torrent file
https://github.com/kyorohiro/Raider/tree/master/Raider/src/info/kyorohiro/raider/util/torrent
- Torrent spec
http://en.wikipedia.org/wiki/Torrent_file
http://www.bittorrent.org/beps/bep_0003.html
http://sourceforge.net/projects/bittorrent/
2013年2月10日日曜日
P2P探訪 Raider その1-2 Torrentファイルフォーマット
登録:
コメントの投稿 (Atom)
Tetorica Retro Player を作成しました
Tetorica Retro Player を作成しました。 https://kyorohiro.itch.io/tetorica-retro-player 元々は、昔集めた動画や、ZIPで固めた漫画を、ブラウン管テレビやレトロゲーム機のような雰囲気で再生してみたい。 そんな...
-
[課題] Low Memory Killer を意図的に発生させたい Androidには、ヒープが涸渇すると使われていないアプリをKillする機能があります。 この記事では、意図的にヒープを枯渇させて、この状態をつくる方法について説明します。 単純にヒープを大...
-
Dart の Native Extensions を利用して、 SDL を用いたマルチプラットフォームのゲーム開発環境を作れるか検証してみた。 結論からいくと、 「Mac 上で動作する SDL x Dart の アプリは動作させることが難しいよ」 と言うことです。 Wind...
-
Emscripten と OpenGLを使ってゲームを作ろうと思いたって、 まずは、SDL2の基本的な使い方を試していた。 しかし、今の所は、SDL 1系 の方が、良いと思いました。 SDL2があるのに、SDL1 を選ぶのはなぜか? # 201...
0 件のコメント:
コメントを投稿