TrackerはHttpサーバ

  • TrackerはHttpサーバ

  • Get リクエストでデータ

Tracker は Httpサーバーです。皆さんがいつも利用しているイ ンターネットのからサイトを表示するのと同じルールで動作し ています。

例えば、インターネットで調べ物をしたい時に、Googleを利用 すると思います。ChromeなりFirefoxなり、IEなどを利用し て、「http://www.google.com 」にアクセスします。すると、検索ワードを入力するためのページが表示されます。

Trackerもそれと同様の仕組みで動作しています。異なるのは、 人が見やすいように加工されたHtml形式のページを渡す変わり に、Bencodingでエンコードされたバイナリーデータが渡すところです。

Getリクエストで依頼をだす

Tracker では、Getリクエストを利用して、データを配信してい るPeerの一覧を取得はます。Getリクエストは、URLの末端 に、「?xx=yyy&mm=nnn」といった文字列を付与したもので す。

Googleなどの検索エンジンで検索した後、アドレスを確認してみてください。例えば、androidと検索した場合、「? q=android&oq=android」といった文字列が追加されていると思 います。「q=」の後に検索ワードの「android」が続いています。 このように、Getリクエストは、アドレスにサーバーへしてほしい指示やデータを含めることができます。

Trackerも同様の仕組みで、依頼をだしています。

Httpサーバーを作成しよう

TrackerがHttpサーバーである事がわかったところで、 Http サーバーを作成してみましょう。Dart言語では、簡単にHttpサー バーを作成する事ができます。 まずは、ブラウザーからGetリクエストを受け取った時にHello と表示してみます。

{
HttpServer.bind(address, port).then((io.HttpServer server) {
server.listen((HttpRequest request) {
request.response.write("hello");
request.response.close();
});
});
}

といった感じで書けます。Getリクエストで渡された値を知り たい場合には、「request.uri.queryParameters」として、確認 できます。例えば、「 test」というキーで渡された値を相手に返すコードは以下のよ うに書けます。

{
HttpServer.bind(address, port).then((io.HttpServer server) {
server.listen((HttpRequest request) {
Map<String, String> parameter = request.uri.queryParameters;
request.response.write("hello"+ parameter[“test”]);
request.response.close();
});
});
}

これで、Getリクエストを扱う事ができるようになりました 。後は、このリクエストに応じて、Peerの一覧、つまりは、 今までリクエストしてきた端末のアドレス等を渡せば、簡易の Trackerサーバーが完成します。

Kyorohiro work

http://kyorohiro.strikingly.com