チケット #55 (new blog)

登録: 22 か月

最終更新: 19 か月

ICEの手抜きチュートリアル

報告者: mtamaki 担当者: mtamaki
優先度: major マイルストーン:
コンポーネント: blog バージョン:
キーワード: 関係者:

説明 (最終更新者: mtamaki) (diff)

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とサーバ側に表示される。

チケットの履歴

更新者: mtamaki (19 か月 前)

  • 説明 が変更されました (diff)
Note: チケットについてのヘルプは TracTickets を参照 して下さい。