18:33
ICEの手抜きチュートリアル
Internet Communications Engine (Ice)というサーバークライアントモデルを複数の言語で実装するためのサポートライブラリがあります。
C++で書いたサーバーpythonのクライアントで接続したり、Javaで書いたサーバにC++で接続したりできるようです。
結構WindowsのC++でHelloWorldするのが大変だったのでメモ。
落としてくる
ZeroC - Download
のページから
Ice-3.2.1-VC80.msi
を落とす。
これはVisual Studio 2005を使う場合。
iceのlibとリンクする必要があるので、Visual Studioのバージョンをあわせること。
インストールする
Program Filesの下に入れてもHelloWorldは動作した。
C++のデモを動かしてみる
デモはインストール先のdemo*ディレクトリにある。ただのdemoディレクトリがC++用。
ここのdemo.slnを開いてそのままビルドすれば全てのdemoがビルドされる。
HelloWorldはdemo/Ice/helloディレクトリにある。プロジェクト名はhelloCとhelloS。
それぞれビルドするとdemo/Ice/helloディレクトリにserver.exeとclient.exeができる。
serverを起動してからclientを起動すると、クライアントからさまざまな方法でサーバにHelloWorldを表示させるデモが見れる。
pythonのデモも動かしてみる
pythonは2.5が必要。
pythonのデモはdemopyにある。
HelloWorldのデモはdemopy/Ice/helloにある。
Iceのpython版の実装はインストール先のpythonディレクトリにあり、そこのIce.pyなどをimportできる必要がある。
とりあえずdemopy/Ice/hello/Client.pyのIceをimportしてる文の前でsys.pathにpythonディレクトリを追加すれば動く。
動かすと、C++版のクライアントと同様の操作をpython版のクライアントから行えることがわかる。
C++のサーバ・クライアントのHelloWorldをスクラッチから作成する
要点は、
- インクルードの検索パスにインストール先のincludeディレクトリを追加する。
- ライブラリの検索パスにインストール先のlibディレクトリを追加する。
- リリース版ならice.libとiceutil.lib、デバッグ版ならiced.lib、iceutild.libをリンク対象に追加する。
こと。
この辺気をつけながら
Writing an Ice Application with C++
を順に追っていけば作れる。
概要は
- Writing a Slice Definitionにしたがってスライスと呼ばれるインターフェースをiceファイルに記述する。
- sclice2cppを使ってhファイルとcppファイルを作る。
- VS2005で空のソリューションを作り、ServerとClientの2つのプロジェクトをWin32コンソールアプリケーションの空のプロジェクトとして新規に追加する。
- 全ての構成に対して先の3つの要点を設定する。
- ServerとClient両方にslice2cppを使って作ったhとcppを追加する
- Serverにcppファイルを追加し、Writing an Ice Application with C++のサンプルコードをコピーする
- -が普通の-ではない文字としてコピーされてコンパイルエラーとなるので、普通の-に置換するとよい。
- Clientにも同じくcppファイルを追加してクライアントのサンプルコードをコピーする。
- ビルドする。
- Serverをデバッグ>新しいインスタンスを作成として先に起動し、次にClientを同じ要領で起動する。
- ここまでうまくいくと、HelloWorldとサーバ側に表示される。