BitTorrent クライアントが 50 行の C++ コード で書ける、 libtorrentをWindows上で動かしてみる。
- libtorrent の簡単な使い方を見る
- サンプルコードを用いて、ubuntuのISOイメージをダウンロードする
困ったら以下を見てみましょう
- downloading and building - libtorrent manual
- 公式サイト
- How-To: Build libtorrent DLL for Windows in C++
- bjam は遅いので、ちゃんと使うならこっちの方法のほうが良いです
- libtorrent-rasterbarの使い方メモ
- 簡単な使い方が、ほどよくまとまっています
- SCM Repositories - libtorrent
- リポジトリ。サンプルコードはバグがけっこう多いけど、リポジトリを見たら直っていることも多いので、変だなーと思ったら見てみると良いかも
- libtorrentのサイト から、
libtorrent-rasterbar-0.15.9.tar.gz
をダウンロードする。 - boostのサイト から、
boost_1_40_0.7z
をダウンロードする。- 最新版を使いたいところだけど、1.41.0以降、BOOST_NO_EXCEPTIONSが使えない問題がある
BOOST_NO_EXCEPTIONS
がマトモに扱える一番新しいバージョンが 1.40.0 なので、これを使う- libtorrentの動作にはboost1.34.1以降が必要なので、使えるboostのバージョンは、1.34.1から1.40.0まで、となる
- Visual C++2010 Express
- 7-Zip
- インストール先の
7z.exe
と7z.dll
にPATH
を通しておくこと。
- インストール先の
- 時間:30分くらい
テキトーなディレクトリを作る。ここでは C:\my_libtorrent
とする
> mkdir C:\my_libtorrent
C:\my_libtorrent
に、
boost_1_40_0.7z
と
libtorrent-rasterbar-0.15.9.tar.gz
をコピーする。
コピー後、コマンドラインから、コピーされていることを確認する
> cd /d C:\my_libtorrent
> dir /b
boost_1_40_0.7z
libtorrent-rasterbar-0.15.9.tar.gz
展開を行い、boost をつくる
> cd /d C:\my_libtorrent
> 7z x boost_1_40_0.7z
> cd boost_1_40_0
> bootstrap.bat
> bjam --with-thread --with-filesystem --with-date_time
1分くらいでビルド完了
展開を行い、libtorrent を作る
> cd /d C:\my_libtorrent
> 7z e libtorrent-rasterbar-0.15.9.tar.gz
> 7z x libtorrent-rasterbar-0.15.9.tar
> del libtorrent-rasterbar-0.15.9.tar
> set BOOST_ROOT=%cd%\boost_1_40_0
> cd libtorrent-rasterbar-0.15.9
> %BOOST_ROOT%\bjam toolset=msvc boost=source openssl=off link=static geoip=off cxxflags="/D BOOST_NO_EXCEPTIONS" variant=release
> %BOOST_ROOT%\bjam toolset=msvc boost=source openssl=off link=static geoip=off cxxflags="/D BOOST_NO_EXCEPTIONS" variant=debug
トータル10分ぐらいでビルド完了
実用度は低いものの、ものすごく短いサンプルコード simple_client を動かす
VC++で新しい Win32 Console Application プロジェクトを空の状態で作る
ソースコード C:\my_libtorrent\libtorrent-rasterbar-0.15.9\examples\simple_client.cpp
をプロジェクトに追加
プロジェクトのインクルードパスに以下を追加
C:\my_libtorrent\libtorrent-rasterbar-0.15.9\include
C:\my_libtorrent\libtorrent-rasterbar-0.15.9\zlib
C:\my_libtorrent\boost_1_40_0
プリプロセッサ定義に以下を追加
TORRENT_DISABLE_GEO_IP
TORRENT_DISABLE_ENCRYPTION
BOOST_NO_EXCEPTIONS
リンカのライブラリパスに以下を追加
C:\my_libtorrent\libtorrent-rasterbar-0.15.9\bin\msvc-10.0\$(Configuration)\boost-source\link-static\openssl-off\threading-multi
C:\my_libtorrent\boost_1_40_0\stage\lib
リンカのライブラリに以下を追加
libtorrent.lib
ビルドを行い、ビルド完了後、ubuntuの.torrentファイルをダウンロードして
> simple_client ubuntu-11.10-alternate-amd64.iso.torrent
などと実行する
残念なお知らせ:このサンプルコードは、ダウンロードが完了してもウンともスンとも言いません。ので、
> resmon
などを実行して、ネットワークの受信量が少なくなったら、「たぶん終わったはず」と判断してください
もうちょっと本格的なサンプル、 client_testのビルド用ファイル を作りました。
ダウンロード、展開後、boost_1_40_0
,libtorrent-rasterbar-0.15.9
の位置が合うようにコピーし、
client-test\client_test.sln
を開いて、ビルド、実行してください。
使い方は、libtorrentのclient_testの解説ページを参照してください。
Unicodeファイル名表示はたぶんできないです。