開発/サブプロジェクト

※書きかけ。鋭意、バージョンアップ中。しばし、お待ちください。

MultiPacketer?とは

簡単に言えば、汎用的なパケット送受信ツールです。
JavaScript?でシーケンスとパケットを定義することにより、どんなパケット(テキストベース)でも、送受信可能です。(SIPでもHTTPでもなんでもOKです。)
この特性を利用して、簡単なシミュレーションやテストに使用することが出来ます。

使用法

変数とは

JavaScript?内で使用

JavaScript?内で使用できるシステム関数です。最新情報は、こちらを参照してください。jsFunction_XXXとなっているものが、上記の関数に相当します。

メソッド意味
void jsEngine.send(String);Stringを送信します。
String jsEngine.receive();受信待ちをします。受信したメッセージをStringで返します。受信できなかった場合、変数TIMEOUT時間後、タイムアウトします。
void jsEngine.importScript(String);Stringで指定したJavaScript?ファイルをimportします。
void jsEngine.print(String);StringをTracerに表示します。
String1 jsEngine.replaceVariables(String2);String2を変数に従って変換したString1を返します。
void jsEngine.setVar(String1,String2);変数String1にString2をセットします。
String1 jsEngine.getVar(String2);変数String2を取得します。
void jsEngine.setVariablesForSIPByPacket(String);変数StringからSIPヘッダーを取得し、ヘッダー名の大文字を変数名としてセットします。例:Toヘッダーは、変数TOにセットされます。
void jsEngine.sleep(int);intミリ秒停止します。
String jsEngine.calcAuth(String authResponse, String requestUri, String username, String password);401,407応答、request-URI、ユーザ名、パスワードを渡すと、StringにAuthヘッダーを返します。
void jsEngine.setReceiveMode(Boolean b)trueをセットするとjsEngine.receive()がsent-byのポートで待ち受け、falseにするとjsEngine.receive()がLocalポートで待ち受けをします。

システム変数

システムが最初から用意している変数一覧です。最新情報は、こちらを参照してください。

変数名意味
ORIGINAL_PACKET最初に送受信したパケット
CURRENT_PACKET現在の送受信したパケット
RECEIVE_PACKET最後に受信したパケット
SEND_PACKET最後に送信したパケット
LOCAL_IPローカルIP
LOCAL_PORTローカルポート
REMOTE_IPリモートIP
REMOTE_PORTリモートポート
RECEIVE_IPVIAのsent-by相当のIP
RECEIVE_PORTVIAのsent-by相当のポート
TRANSPORT_TYPEトランスポートタイプ
IS_RECEIVE_MODEローカルIPを使用するかsent-byを使用するか
TIMEOUTSocketの待ち受けタイムアウト時間(ms)

拡張するには

JSControllerクラスが外部とのインタフェースを担っています。

〜〜〜〜〜いろいろな処理〜〜〜〜〜
String result = "いろいろな処理の結果";
String jsCode = "jsEngine.setVar(\"RESULT\","\" + result  + "\");" +
               "jsEngine.importScript(\"./mainFunc.js\");";

JSController jsCon = new JSController();
jsCon.execByText(jsCode);

とすることにより、アプリ上からJavaScript?を実行することが出来ます。
mainFunc.jsには、変数RESULTを処理する内容が書かれているものとします。

JavaScript?サンプル

これは、非常に単純なサンプルです。
例えば、下記のようにすることにより、1xx応答が複数回来ることに対応可能となります。

var receivePacket = new String();
// 200OKパケットであるかをチェック。
while(receivePacket.indexOf("SIP/2.0 200") != 1) {
  jsEngine.receive();
  receivePacket = jsEngine.getVar("RECEIVE_PACKET");
}

このように、JavaScript?の関数や機能を使うことにより、さまざまな状況に対応できます。

インストール法

必要なライブラリ

ビルドに必要なツール

取得

ソースファイル

https://svn.sourceforge.net/svnroot/siprop/trunk/subProject/MultiPacketer

バイナリファイル

Jarファイルは、こちらに。

ディレクトリ構造

各種資料