- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[[Tutorial]]
#contents
*メッセージ送信ツールの作成 [#uc0b86f0]
※このサンプルはサーバv121029, ビューワーv2.0.1以降で正常に動作します。
ここでは簡単なサービスプロバイダを作成する方法を紹介します。
サービスプロバイダを使用することによりクライアント側からサーバ側に様々なデータを提供することができるようになります。
開発ツールとしてVC++(2008)を使用することを前提とします。
**ライブラリの取得 [#nac2be19]
以下のページからサービスライブラリSIGService_v<version>.zipをダウンロードします。
-[[サービスライブラリ]]
**プロジェクト新規作成 [#yd34b304]
VC++2008で新規プロジェクトを作成します。ファイル→新規作成→プロジェクト
新しいプロジェクトのダイアログが立ち上がるとWin32のWin32コンソールアプリケーションを選択し、プロジェクト名"MyService"と入力してOKボタンを押します。
アプリケーションウィザードのウィンドウが立ち上がったら完了ボタンを押します。
**ライブラリの設定 [#a9b796c7]
+ソリューションエクスプローラのプロジェクト名を右クリックし、参照を選択します。
「構成プロパティ」→「C/C++」→「全般」を選択し、「追加のインクルードディレクトリ」に展開したライブラリのincludeフォルダを指定します。&br; &br;
+次に「構成プロパティ」→「リンカ」→「全般」を選択し、「追加のライブラリディレクトリ」に展開したライブラリのlibフォルダのDebugを指定します。
(ReleaseモードでコンパイルするときはReleaseを選択します。)&br; &br;
+最後に同じ「リンカ」の「入力」を選択し「追加の依存ファイル」に"SIGService.lib"を追加します。
//ws2_32.lib
** サービスサンプル[#b386d7e5]
MyService.cppを以下のように修正します。
MyService.cpp
#highlight(cpp){{
#include "stdafx.h"
#include "SIGService.h"
int _tmain(int argc, _TCHAR* argv[])
{
// サービス名を指定してサービスクラスのインスタンスを作成します
sigverse::SIGService srv("MyService");
// ホスト名とポート番号を指定してSIGVerseサーバに接続します
srv.connect("hostname", 9001);
// エンティティ"man_000"にメッセージ"Hello"を送信します
srv.sendMsg("man_000", "Hello");
// サーバから切断します
srv.disconnect();
return 0;
}
}}
connectの引数で指定するホスト名とポート番号は自分の環境に合わせて置き換えます。
ビルドが正常に行えるか確認してみてください。
**実行 [#zc55d270]
これで準備は整いました。
まずチュートリアルのサンプル[[人間型エージェントの操作]]の「コマンドによるエージェントの操作」をサーバ側で実行します。ビューワーからサーバに接続して"START"ボタンを押してシミュレーションを開始します。この状態でメッセージ送信プログラムを実行してみてください。エージェントがお辞儀したら成功です。
*プラグインとしてビューワーに登録 [#b3215ae4]
次に作成したサービスをプラグインとしてビューワーに登録し、ビューワーから起動する方法を説明します。
サービスサンプルを以下のように修正します。
#highlight(cpp){{
#include "stdafx.h"
#include "SIGService.h"
int _tmain(int argc, _TCHAR* argv[])
{
// サービス名を指定してサービスクラスのインスタンスを作成します
sigverse::SIGService srv("MyService");
// メイン関数の引数からサーバのホスト名とポート番号を取得します
unsigned short port = (unsigned short)(atoi(argv[3]));
srv.connect(argv[2], port);
// エンティティ"man_000"にメッセージ"Hello"を送信します
srv.sendMsg("man_000", "Hello");
// サーバから切断します
srv.disconnect();
return 0;
}
}}
サーバのホスト名とポート番号がメイン関数の引数として与えられます。
**ビューワーへ登録 [#v01acfa7]
ビルドに成功するとexeファイルができますがこのままでは実行できません。拡張子を.sigに変更します。
#highlight(end)
*Old version [#xc430bd6]
メッセージ送信ツールの作成(v120330, v1.4.8)
[[メッセージ送信ツールの作成(v120330, v1.4.8)]]