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