Adobe的documentation for the AMF format似乎并未指定整个AMF消息的结构。它仅指定单个数据类型的格式。我已经读了五遍该死的东西,或者我只是完全错过了实际AMF消息应该包含的内容,或者它不存在。有人知道实际的整个邮件结构的任何文档吗?

最佳答案

该规范可以描述为“简洁”。

AMF编码使用称为“类型标记”的字节。整数的类型标记为值4。整数数据紧随该标记,长度为1-4个字节。长度会有所不同,因为整数类型是“压缩”的,因此值0-127仅需要1个字节,而较大的值需要更多的字节。规范将该整数格式称为“U29”。

例如,如果我们仅传递整数“5”,则有效的AMF数据包将是这两个字节:04 05
在网络上找到的应用程序中,有时会在AMF数据的前面加上一个以网络字节顺序编码为无符号长的长度。如果您正在观察这样的应用程序,则可能会看到:
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-按值的字符串,字符串长度:275 69-'ui'0B-按值的字符串,字符串长度:570 61 72 61 6D-'param'19-按值的字符串,字符串长度:1262 75 74 74 6F 6E 5F 70 72 65 73 73-'button_press'04-整数05-整数值:501-空名称,终止此对象的动态成员的空列表

由于该数据包将占用28个字节,因此在野外遇到该数据包时,可以添加前缀00 00 00 1C

要考虑的另一种可能性是,通常可以使用zlib中可用的“放气”压缩来压缩AMF通信。

我希望这可以帮助您整理规范说明,但是如果您有任何疑问,我会尽力回答。

关于flash - AMF消息结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1499205/

10-11 08:17