[[開発/サブプロジェクト]] ※書きかけ。鋭意、バージョンアップ中。しばし、お待ちください。 *MultiPacketerとは [#oee416ab] 簡単に言えば、汎用的なパケット送受信ツールです。~ JavaScriptでシーケンスとパケットを定義することにより、どんなパケット(テキストベース)でも、送受信可能です。(SIPでもHTTPでもなんでもOKです。)~ この特性を利用して、簡単なシミュレーションやテストに使用することが出来ます。 *使用法 [#w25d0aa6] **変数とは [#q4e5ef4d] **JavaScript内で使用 [#p7377b8c] JavaScript内で使用できるシステム関数です。最新情報は、[[こちら>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html]]を参照してください。jsFunction_XXXとなっているものが、上記の関数に相当します。~ |CENTER:メソッド|CENTER:意味| |[[void jsEngine.send(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_send(java.lang.String)]]|Stringを送信します。| |[[String jsEngine.receive();>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_receive()]]|受信待ちをします。受信したメッセージをStringで返します。受信できなかった場合、変数TIMEOUT時間後、タイムアウトします。| |[[void jsEngine.importScript(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_importScript(java.lang.String)]]|Stringで指定したJavaScriptファイルをimportします。| |[[void jsEngine.print(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_print(java.lang.String)]]|StringをTracerに表示します。| |[[String1 jsEngine.replaceVariables(String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_replaceVariables(java.lang.String)]]|String2を変数に従って変換したString1を返します。| |[[void jsEngine.setVar(String1,String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_setVar(java.lang.String, java.lang.String)]]|変数String1にString2をセットします。| |[[String1 jsEngine.getVar(String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_getVar(java.lang.String)]]|変数String2を取得します。| |[[void jsEngine.setVariablesForSIPByPacket(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_setVariablesForSIPByPacket(java.lang.String)]]|変数StringからSIPヘッダーを取得し、ヘッダー名の大文字を変数名としてセットします。例:Toヘッダーは、変数TOにセットされます。| |[[void jsEngine.sleep(int);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_sleep(double)]]|intミリ秒停止します。| |[[String jsEngine.calcAuth(String authResponse, String requestUri, String username, String password);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_calcAuth(String,String,String,String)]]|401,407応答、request-URI、ユーザ名、パスワードを渡すと、StringにAuthヘッダーを返します。| |[[void jsEngine.setReceiveMode(Boolean b)>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_setReceiveMode(Boolean)]]|trueをセットするとjsEngine.receive()がsent-byのポートで待ち受け、falseにするとjsEngine.receive()がLocalポートで待ち受けをします。| **システム変数 [#ece60a8e] システムが最初から用意している変数一覧です。最新情報は、[[こちら>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html]]を参照してください。~ |CENTER:変数名|CENTER:意味| |[[ORIGINAL_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#ORIGINAL_PACKET]]|最初に送受信したパケット| |[[CURRENT_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#CURRENT_PACKET]]|現在の送受信したパケット| |[[RECEIVE_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_PACKET]]|最後に受信したパケット| |[[SEND_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#SEND_PACKET]]|最後に送信したパケット| |[[LOCAL_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#LOCAL_IP]]|ローカルIP| |[[LOCAL_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#LOCAL_PORT]]|ローカルポート| |[[REMOTE_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#REMOTE_IP]]|リモートIP| |[[REMOTE_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#REMOTE_PORT]]|リモートポート| |[[RECEIVE_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_IP]]|VIAのsent-by相当のIP| |[[RECEIVE_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_PORT]]|VIAのsent-by相当のポート| |[[TRANSPORT_TYPE>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#TRANSPORT_TYPE]]|トランスポートタイプ| |[[IS_RECEIVE_MODE>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#IS_RECEIVE_MODE]]|ローカルIPを使用するかsent-byを使用するか| |[[TIMEOUT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#TIMEOUT]]|Socketの待ち受けタイムアウト時間(ms)| **拡張するには [#t7785419] [[JSControllerクラス>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSController.html]]が外部とのインタフェースを担っています。 〜〜〜〜〜いろいろな処理〜〜〜〜〜 String result = "いろいろな処理の結果"; String jsCode = "jsEngine.setVar(\"RESULT\","\" + result + "\");" + "jsEngine.importScript(\"./mainFunc.js\");"; JSController jsCon = new JSController(); jsCon.execByText(jsCode); とすることにより、アプリ上からJavaScriptを実行することが出来ます。~ mainFunc.jsには、変数RESULTを処理する内容が書かれているものとします。 **JavaScriptサンプル [#f6d58975] これは、非常に単純なサンプルです。~ 例えば、下記のようにすることにより、1xx応答が複数回来ることに対応可能となります。 var receivePacket = new String(); // 200OKパケットであるかをチェック。 while(receivePacket.indexOf("SIP/2.0 200") != 1) { jsEngine.receive(); receivePacket = jsEngine.getVar("RECEIVE_PACKET"); } このように、JavaScriptの関数や機能を使うことにより、さまざまな状況に対応できます。 *インストール法 [#ccda7068] **必要なライブラリ [#t4f251ca] -J2SE5.0以上 -[[rhino1_6R2>http://www.mozilla-japan.org/rhino/index.html]] -[[junit-3.8>http://www.junit.org/index.htm]] -[[log4j-1.2.8>http://logging.apache.org/log4j/docs/]] ***ビルドに必要なツール [#w6a21124] -[[Maven2>http://maven.apache.org/]] **取得 [#l9c1685f] ***ソースファイル [#q087d0c8] https://svn.sourceforge.net/svnroot/siprop/trunk/subProject/MultiPacketer ***バイナリファイル [#se2e089c] Jarファイルは、こちらに。 ***ディレクトリ構造 [#u241f9a9] *各種資料 [#j66d3bc8] --[[Javadoc>http://www.siprop.org/ja/javadoc/MultiPacketer/]]