このドキュメントはVCE 2.1.0のもので、最新のバージョンではありません。 →最新のバージョンのドキュメントを見る。
サンプルについて
目次
genping
特徴
genping は gen を用いたほぼ最小限の構成です。 ping は相手に小さなデータを送って、返信が返ってくるまでの時間を測定するのによく用いられます。 手順としては、まず小さなデータとして自プログラムで取得可能な時間を送信し、相手にそのままのデータを返信してもらいます。 返ってきたデータには送信したときの時間がはいっているため、その時間と現在の時間の差分を計算します。 VCE では ping の機能は Codec クラスに実装されていますが、最も簡単なプロトコルのためサンプルとして作っています。
ファイル内容
- main.cpp: main 関数を定義し、実 main である SampleMain を呼んでいます。マルチプラットフォームに対応するためこの方法を使っています。
- ping.cpp: 実際のプログラム。サーバとクライアントの両方が実装されています。
- ping.xml: ping のみ定義されたプロトコル定義ファイル。 Flow を指定していない(P2P)メソッドのため、サーバ/クライアントで共通です。
- Makefile: make 用 Makefile。gen を実行し、プロトコルファイルを生成後、プログラムを生成します。
- gen.bat: Windows 環境用のバッチファイル。gen を実行し、プロトコルファイルを生成します。
- genping.vcproj: VisualStudio .NET 2005 用プロジェクトファイル。ビルド前イベントで gen.bat を実行した後、プログラムをビルドします。
実行方法
genping の実行プログラムを作成し、起動します。パラメータになにも指定せずに起動するとサーバとして動作します。 クライアントとして起動し、サーバへ接続するには、パラメータにサーバとして起動した機器の IP アドレスもしくはホスト名を指定します。 ポート番号は12233番が使われます。
advping
特徴
advping は genping をもとにプロトコルを追加し、 Win32GUI から各種の操作をできるようにしたものです。 クライアントプログラムは Windows 専用で GUI 処理が含まれているため若干複雑です。 サーバプログラムの方は非常にシンプルな構成で、プラットフォームに依存しません。 またプロトコルメソッドはすべて Flow が指定してあり、データの流れがクライアント→サーバであるか、サーバ→クライアントであるかが明確になっています。 ログイン処理、ping 処理、チャット処理が含まれているのでゲームの基本要素の仕組みを知ることができます。
クライアントは Windows のタイマーメッセージにより Poll を実行しているため間隔が長くレスポンスが遅めです。 サーバは PollingWait を加えているため若干レスポンスが遅めです。どちらも CPU リソースを完全に消費しないようにできています。
ファイル内容
- gen.bat: gen を実行し、プロトコルファイルを作るバッチファイルです。
- ping.xml: プロトコル定義ファイルです。
- pingproto.cpp: gen.bat を実行すると生成されるプロトコルソースです。
- pingproto.h: 同ヘッダファイルです。
- client/main.cpp: クライアントのソースです。プロトコル送受信の定義から Win32GUI の処理まで含まれています。
- client/client.rc: Win32 用リソーススクリプトです。ダイアログなどの定義です。
- client/resource.h: リソースを利用するためのヘッダファイルです。
- client/client.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- server/main.cpp: サーバのソースです。プロトコルの送受信が定義されています。
- server/Makefile: make 用 Makefile です。
- server/server.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
実行方法
まずサーバをビルドし、実行します。ポート番号をパラメータとして指定できます。なにも指定せずに起動した場合は 36985 番が使われます。 次にクライアントをビルドし、実行します。ログインウィンドウが現れるのでサーバのアドレスとポート番号、使用する名前を入力し、 OK を押します。
接続後すぐにログイン処理が行われます。クライアント側からサーバへ名前が送られ、名前の正当性がチェックされます。チェックを通らなかった場合は切断されます。 ログインに成功したら、クライアントを自由に操作してみてください。 Ping コマンドによりサーバのレスポンスを計ることや、 HeavyPing コマンドによって 1M バイトのデータを付加した Ping を送ることができます。 users コマンドでは接続中のユーザ一覧を取得します。 下部のエディットボックスに文字列を入力し、 say コマンドで接続中のユーザすべてへメッセージを送ることもできます。
Polling のチェックを外すと VCE の Poll を一時停止します。 Close ボタンによりクライアント側から切断することができます。
advping のクライアントプログラムではログを 3 種類に分けています。上段に VCE のログ、中段に gen により生成されたプロトコルのログ、 下段にアプリケーション固有のログが出力されます。
mpis
特徴
複数のプロトコルを一つのセッションで使うための MPI のサンプルです。 gen によって生成されるクラスは MPINode をベースクラスにしたものになり、 実際のセッションは MPISession をベースクラスにしたものになります。 このサンプルでは ping と chat を別々のプロトコルとして定義しています。 クライアントプログラムでは、チャットの文字入力を非同期で行うためにスレッドを用いています。
ファイル内容
- gen.bat: gen を実行し、プロトコルファイルを作るバッチファイルです。
- Makefile: gen を実行し、プロトコルファイルを作る make 用 Makefile です。
- ping.xml: ping プロトコル用プロトコル定義ファイルです。 ping 以外にも構造体を送るメソッドなどが定義されています。
- chat.xml: chat プロトコル用プロトコル定義ファイルです。
- pingproto.cpp: ping プロトコルソースファイルです。 gen により生成されます。
- pingproto.h: 同ヘッダファイルです。
- chatproto.cpp: chat プロトコルソースファイルです。 gen により生成されます。
- chatproto.h: 同ヘッダファイルです。
- mpicli/chatcli.cpp: chatproto を利用した chat クライアントの動作の定義です。
- mpicli/chatcli.h: 同宣言です。
- mpicli/pingcli.cpp: pingproto を利用した ping クライアントの動作の定義です。
- mpicli/pingcli.h: 同宣言です。
- mpicli/mpicli.cpp: メインソースです。定義したクラスを使い、 MPISession を作っています。
- mpicli/mpicli.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- mpicli/Makefile: make 用 Makefile です。
- mpisrv/chatsrv.cpp: chatproto を利用した chat サーバの動作定義です。
- mpisrv/chatsrv.h: 同宣言です。
- mpisrv/pingsrv.cpp: pingproto を利用した ping サーバの動作定義です。
- mpisrv/pingsrv.h: 同宣言です。
- mpisrv/mpisrv.cpp: メインソースです。定義したクラスを使い、 MPISession を作っています。
- mpisrv/mpisrv.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- mpisrv/Makefile: make 用 Makefile です。
実行方法
サーバを起動し、クライアントの実行パラメータにサーバのアドレスとチャットに使う名前を入れます。 デバッグモードでないときはクライアントは 50 本のセッションで接続しようとします。
finder
特徴
finder は VCE の Finder の機能を使ってサーバへ接続するサンプルです。 サーバアプリケーションは自身のアドレスをローカルネットワーク上に送信し、 それを受け取ったクライアントはそのアドレスへ接続を試みます。 これにより、クライアント側でサーバのアドレスを入力する必要がなくなります。
ファイル内容
- client/client.cpp: クライアントのメインプログラムです
- client/finderclient.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- client/Makefile: make 用 Makefile です。
- server/server.cpp: サーバのメインプログラムです
- server/finderserver.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- server/Makefile: make 用 Makefile です。
実行方法
サーバ、クライアント共に、起動するだけで動作します。しばらくするとクライアントがサーバを発見し、接続します。 接続が完了するとメッセージを表示し、一旦切断します。 10 秒ほどするとまたサーバを発見し接続します。
bcaster
特徴
bcaster は VCE の Finder の機能を使ってサーバへ接続するサンプルです。 Finder のサンプルを拡張して作られています。 クライアントがサーバへ接続を完了するとクライアントからメッセージを入力し、サーバへ送ることができます。
ファイル内容
- client/client.cpp: クライアントのメインプログラムです
- client/bcasterclient.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- client/Makefile: make 用 Makefile です。
- server/server.cpp: サーバのメインプログラムです
- server/bcasterserver.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- server/Makefile: make 用 Makefile です。
実行方法
サーバ、クライアント共に、起動するだけで動作します。しばらくするとクライアントがサーバを発見し、接続します。 クライアントではメッセージを入力し、サーバへ送信することができます。 サーバでは受け取ったメッセージをそのまま表示します。
webcgi
特徴
非常にシンプルなウェブサーバのサンプルです。 ホームページにサーバの現在時刻を表示し、 それ以外のページにアクセスしたときはブラウザからのリクエスト内容を表示します。
ファイル内容
- web.cpp: メインソースです。
- web.vcproj: VisualStudio .NET 2005 用プロジェクトファイルです。
- Makefile: make 用 Makefile です。
実行方法
サーバを起動します。 8080 番ポートにウェブブラウザからアクセスするとページが見られます。