[[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)]]

Front page   New List of pages Search Recent changes   Help   RSS of recent changes