5

AMF形式に関するAdobeのドキュメントでは、AMFメッセージ全体の構造が実際に指定されているようには見えません。個々のデータ型の形式のみを指定します。私はいまいましいことを5回読みましたが、実際のAMFメッセージに含まれるべきものが完全に欠落しているか、そこにありません。実際のメッセージ全体の構造に関するドキュメントを知っている人はいますか?

4

3 に答える 3

9

仕様は「簡潔」と表現される場合があります。

AMFエンコーディングは、「タイプマーカー」と呼ばれるバイトを使用します。整数のタイプマーカーは値4です。整数データはこのタグの直後にあり、長さは1〜4バイトです。整数型は「圧縮」されているため、長さは異なります。0〜127の値は1バイトしか必要としませんが、値が大きいほど、より多くのバイトが必要になります。この整数形式は、仕様では「U29」と呼ばれています。

例として、整数「5」を単純に渡す場合、有効なAMFパケットは次の2バイトになります。
04 05

Webで見つかったアプリケーションでは、AMFデータの前に、ネットワークバイトオーダーでunsignedlongとしてエンコードされた長さが付いている場合があります。このようなアプリケーションを観察している場合は、次のように表示される場合があります。
00 00 00 02 04 05ここで、00 00 00 02は、次のAMFデータの長さが2バイトであることを示しています。

ここで、次のコンストラクターを持った後にオブジェクトを送信したとします。

   this.ui = "button_press";
   this.param = 5;

次に、AMFデータに次のように表示される場合があります。

0A-オブジェクトタグ
2B-u29o-val:2つの封印されたメンバー、特性とデータを持つオブジェクト、場合によっては動的メンバー
01-空の文字列-匿名オブジェクト
05-値による文字列、文字列の長さ:2
75 69- 'ui'-
0B値による文字列、文字列の長さ:5
70 61 72 61 6D- 'param'-値ごとの
19文字列、文字列の長さ:12
62 75 74 74 6F 6E 5F 70 72 65 73 73-'button_press'-
04整数
05-整数の値:5-
01空の名前、このオブジェクトの動的メンバーの空のリストを終了します

そのパケットは28バイトを使用するため、実際に検出された場合は、プレフィックスとして:が付けられる場合があります00 00 00 1C

考慮すべきもう1つの可能性は、AMF通信が圧縮される可能性があることです。通常、zlibで使用可能な「deflate」圧縮を使用します。

これが仕様の整理に役立つことを願っていますが、ご不明な点がございましたら、お答えしたいと思います。

于 2009-10-12T22:35:45.430 に答える
1

リモーティングメッセージ構造を探している場合は、AMF0仕様の最後に追加されます-セクション4

于 2009-11-04T10:43:25.017 に答える
0

wikihttp ://en.wikipedia.org/wiki/Action_Message_Formatを参照することもできます 。必要な情報が十分にあります。

ありがとう、ラジェッシュ。

于 2013-08-08T13:11:45.920 に答える