[[Tutorial]]
#contents

*メッセージ送信ツールの作成(.NET) [#g29217fd]
SIGVerseサーバのエージェントにメッセージを送信するツールを作成します。
ここではVC++.NET(2008)を使用することを前提とします。(※VC++2010には対応していません)
**ライブラリの取得 [#nac2be19]
#ref(sigverse.dll)
上のdllファイルをダウンロードします。

**設定 [#l0e06e82]
***プロジェクト新規作成 [#yd34b304]
VC++の新しいプロジェクトを作成します。ファイル→新規作成→プロジェクト

新しいプロジェクトのダイアログが立ち上がるとCLRのWindowsフォームアプリケーションを選択し、プロジェクト名を入力してOKボタンを押します。
***dll参照 [#wf35673c]
ソリューションエクスプローラの中のプロジェクトを右クリックして参照を選択します。
共通プロパティのFrameworkと参照を選択し、新しい参照の追加ボタンをクリックします。次に参照タブを選択して、上でダウンロードしたsigverse.dllを選択します。

***ボタン追加 [#j41162f6]
ツールボックスからButtonを選択して適当にボタンを追加します。
#ref(SendMessage1.jpg)

**イベントハンドラ [#d4786251]
ボタンをダブルクリックしてイベントハンドラの中に以下のコードを追加してコンパイルします。

#highlight(cpp){{
//メッセージ送信オブジェクト作成
sigverse::MessageSender msg("test");
//サーバに接続します。
if(msg.connect("hostname",9001))
{
    //メッセージを作成します。
    char *strs[] = {  
        "Hello",
        };  
    //メッセージを"Hello"を送信します。
    msg.sendto("man_000",1,strs);
}
}}
***メッセージ送信オブジェクト作成 [#x2d2dab0]
MessageSenderのコンストラクタで引数で送信元の名前を指定します。

***connect [#q211cf8d]
msg.connectでサーバに接続します。1番目の引数"hostname"はSIGVerseサーバのホスト名に置き換えてください。2番目の引数はSIGVerseサーバのポート番号を入力します。
メッセージを送信するたびにconnectします。

***sendto [#uc444b00]
sendtoでメッセージを送信します。1番目の引数は送信相手を、2番目は送信するメッセージの数(配列のサイズ)、3番目はメッセージを指定します。


**メッセージ送信 [#i8773763]
これでボタンを押すと"man_000"にメッセージ"Hello"が送信できるようになりました。 

まずチュートリアルのサンプル[[人間型エージェントの操作]]の「コマンドによるエージェントの操作」のサンプルコードをサーバ側で実行します。
次にビューワーで接続し、"Send"ボタンを押してシミュレーションを開始します。

シミュレーション開始したら、先ほど作成したボタンを押してメッセージを送信します。
人間がお辞儀したらメッセージ送信成功です。

*ネイティブC++の場合 [#j7a5b7b5]

VC++2008(アンマネージド)を使用することを前提とします。

**ライブラリダウンロード [#t93135cc]
まず以下のzipファイルをダウンロードして展開します。
#ref(sndmsg.zip)

※VC++2005の場合はこちら
#ref(sndmsg_2005.zip)

展開したフォルダの中にはincludeとlibフォルダがあります。
**設定 [#s8df7233]
***新規プロジェクト作成 [#qeba4659]
VC++2008で新規プロジェクトを作成します。ファイル→新規作成→プロジェクト

新しいプロジェクトのダイアログが立ち上がるとWin32のWin32コンソールアプリケーションを選択し、プロジェクト名を入力してOKボタンを押します。

アプリケーションの設定ダイアログでは空のプロジェクトにチェックを入れて完了ボタンを押します。
***ソースコード [#b386d7e5]

以下のコードを追加します。

test_sndmsg.cpp
#highlight(cpp){{
#include "sndmsg.h"

void main(void){
	sigverse::MessageSender msg("test");

	if(msg.connect("hostname",9001))
	{
		char *strs[] = {
			"Hello",
		};
		msg.sendto("man_000",1,strs);
	}
}
}}


ホスト名とポート番号は自分の環境に合わせて置き換えます。
サンプルコードに関する説明はこちら
[[こちら>#d4786251]]と同じです。
***ライブラリの設定 [#a9b796c7]
ソリューションエクスプローラのプロジェクト名を右クリックし、参照を選択します。
「構成プロパティ」→「C/C++」→「全般」を選択し、「追加のインクルードディレクトリ」に展開したライブラリのincludeフォルダを指定します。

次に「構成プロパティ」→「リンカ」→「全般」を選択し、「追加のライブラリディレクトリ」に展開したライブラリのlibフォルダを指定します。

最後に同じ「リンカ」の「入力」を選択し「追加の依存ファイル」に以下の2つを追加します。

sndmsg.lib

ws2_32.lib

**実行 [#zc55d270]
これで準備は整いました。

コンパイルしてチュートリアルのサンプル[[人間型エージェントの操作]]の「コマンドによるエージェントの操作」のサンプルコードをサーバ側で実行した状態でメッセージ送信プログラムを実行してみてください。エージェントがお辞儀したら成功です。

#highlight(end)

Front page   Edit Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes