TcpRuleRecvProto の例

この例では、Siebel 6 Thin Client 用の記録ルールを書く方法を説明します。

このクライアントは、Web ブラウザで実行する ActiveX コントロールです。記録したスクリプトは、1 つの WebPageUrl() 呼び出しと、それに続く ActiveX コントロールからの TCP/IIIIP トラフィックで構成されます。記録ルールがないと、サーバー レスポンスは、WebTcpipRecvExact() 呼び出しによってスクリプト化されます。

記録した Siebel 6 TCP/IP スクリプトの一部

WebTcpipSendBin(hWeb0,
  "\h00000030000000000000000000000001" // ···0············ 00000000
  "\h0000000C0000001C0000019100000000" // ················ 00000010
  "\h00000020000002580000000C00000000" // ··· ···X········ 00000020
  "\h00000000", 52); // ···· 00000030
WebTcpipRecvExact(hWeb0, NULL, 40);

サーバー レスポンスは、TrueLog Explorer を利用して分析できます。

各レスポンスは、プロトコル ヘッダーを含み、プロトコル ヘッダーはバイト数を指定する 4 バイトと、プロトコル ヘッダーで構成されます。長さの指定は、ビッグ エンディアン形式で行われます (最上位バイトを先に)。

これらの結果に基づき、記録ルールは次に示すように記述されます。

Siebel 6 Thin Client TCP/IP トラフィックの記録ルール

<?xml version="1.0" encoding="UTF-8" ?>
<RecordingRuleSet>
  <TcpRuleRecvProto>
    <Name>Siebel TCP Protocol</Name>
    <Identify>
      <LengthOffset>0</LengthOffset>
      <LengthLen>4</LengthLen>
    </Identify>
  </TcpRuleRecvProto>
</RecordingRuleSet>

このルールは、プロトコル ヘッダーがデータ ブロックの長さをオフセット 0 から 4 バイトを使用して含んでいることを指定します。このルールを使用すると、 以下に示すように、Recorder はサーバー レスポンスに対して関数 WebTcpipRecvProto() を使用してスクリプトを生成します。

記録ルールを使用して記録したスクリプトの一部

WebTcpipSendBin(hWeb0,
  "\h00000030000000000000000000000001" // ···0············ 00000000
  "\h0000000C0000001C0000019100000000" // ················ 00000010
  "\h0000001F000002580000000C00000000" // ·······X········ 00000020
  "\h00000000", 52); // ···· 00000030
WebTcpipRecvProto(hWeb0, 0, 4);

このルールを使用して記録したスクリプトは、記録中に受信したバイト数と異なるバイト数を受信しても正しく再生されます。