Flash AMF消息结构?

Flash AMF消息结构?,flash,adobe,amf,Flash,Adobe,Amf,Adobe似乎并没有实际指定整个AMF消息的结构。它只指定单个数据类型的格式。这该死的东西我已经读了五遍了,要么我完全不知道一条真正的AMF消息应该包含什么,要么它不在那里。有人知道实际整个消息结构的任何文档吗?该规范可能被描述为“简洁” AMF编码使用称为“类型标记”的字节。整数的类型标记是值4。整数数据紧跟在该标记之后,长度为1-4字节。长度不同,因为整数类型是“压缩的”,因此值0-127只需要1字节,而较大的值需要更多字节。此整数格式在规范中称为“U29” 例如,如果我们只传递整数“5”,

Adobe似乎并没有实际指定整个AMF消息的结构。它只指定单个数据类型的格式。这该死的东西我已经读了五遍了,要么我完全不知道一条真正的AMF消息应该包含什么,要么它不在那里。有人知道实际整个消息结构的任何文档吗?

该规范可能被描述为“简洁”

AMF编码使用称为“类型标记”的字节。整数的类型标记是值4。整数数据紧跟在该标记之后,长度为1-4字节。长度不同,因为整数类型是“压缩的”,因此值0-127只需要1字节,而较大的值需要更多字节。此整数格式在规范中称为“U29”

例如,如果我们只传递整数“5”,有效的AMF数据包将是以下两个字节:
04 05

在web上的应用程序中,AMF数据前有时会有一个长度,该长度按网络字节顺序编码为无符号长。如果您正在观察这样一个应用程序,您可能会看到:
00 00 02 04 05
,其中
00 00 02
表示以下AMF数据的长度为2字节

现在,假设我们在对象具有以下构造函数之后发送了一个对象:

this.ui = "button_press"; this.param = 5; this.ui=“按下按钮”; this.param=5; 然后,我们可能会在AMF数据中看到以下内容:

0A
-对象标记
2B
-u29o val:2个密封成员,带有特征和数据的对象,可能是动态成员
01
-空字符串--匿名对象
05
-按值字符串,字符串长度:2
7569
-“ui”
0B
-按值字符串,字符串长度:5
706172616D
-“参数”
19
-按值字符串,字符串长度:12
62 75 74 74 6F 6E 5F 70 72 65 73
-“按下按钮”
04
-整数
05
-整数值:5
01
-空名称,终止此对象的动态成员的空列表

由于该数据包将占用28个字节,因此在野外遇到时,它的前缀可能是:
001c

另一个可能考虑的是AMF通信可以被压缩,通常使用在ZLIB

中可用的“紧缩”压缩。
我希望这有助于您整理规范,但如果您有问题,我会尝试回答他们。

如果您正在寻找远程消息结构,它会附加到-第4节的末尾,您也可以通过wiki 它有足够的所需信息

谢谢,
拉杰什。

谢谢,非常有帮助。我真的希望在某个地方有一个完整有效的AMF消息的BNF描述,包括头和诸如此类的东西;我通读了AMFPHP的代码,只是想看看它在解码时做了什么,其中有很多东西在实际规范中甚至没有暗示,更不用说详细描述了。