实例讲解AMF格式

AMF协议是Action Message Format协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用。AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。

AMF使用第一个字节作为该数据的格式,有以下几种格式

typevalue
Number0×00
Boolean0x01
String0x02
Object0x03
MovieClip0x04
Null0x05
Undefined0x06
Reference0x07
MixedArray0x08
EndOfObject0x09
Array0x0a
Date0x0b
LongString0x0c
Unsupported0x0d
Recordset0x0e
XML0x0f
TypedObject0x10
AMF3 data0x11

下面举几个例子来说明常用的几种格式。

Number

00 7e 8f 00 00 00 00 00 00

00:第一个字节表示该amf的类型为double型,所以后面紧跟的8个字节为一个double型。

7e 8f 00 00 00 00 00 00:总共8位,是一个double类型。

Boolean

01 00

01:第一个字节表示该amf的类型为bool型,后面跟着一个字节表示bool类型的数。

00:00表示false,01表示true。

String

02 00 05 68 65 6c 6c 6f  

02:第一个字节表示该amf的类型为字符串类型。

00 05:两个字节表示字符串的长度,这两个字节表示字符串的长度为5。

68 65 6c 6c 6f:这5个字节表示字符串"hello"。

Object

Object类型是由一对一对的key和value组成,类似于一个数组,下面举个例子进行说明。

03 00 05 68 65 6c 6c 6f 00 7e 8f 00 00 00 00 00 00 00 03 61 70 70 
02 00 05 68 65 6c 6c 6f 00 00 09

03:第一个字节表示该amf的类型为字符串类型。

key:

00 05:表示字符串的长度。

68 65 6c 6c 6f:字符串"hello"。

val:

00:表示val的类型为double型,则后面8个字节为一个double型。

7e 8f 00 00 00 00 00 00:表示一个double型的数,表示上面那个key对应的值。

key:

00 03:表示字符串的长度。

61 70 70:字符串"app"。

val:

02:表示该数据类型为字符串。

00 05:表示字符串的长度。

68 65 6c 6c 6f 00 7e 8f:字符串"hello",表示上面那个key对应的值。

00 00 09:最后以00 00 09表示object类型结尾。

Array

Array的格式类似于Object。

08 00 00 00 02 00 05 68 65 6c 6c 6f 00 7e 8f 00 00 00 00 00 00 00 03 61 70 70 
02 00 05 68 65 6c 6c 6f

08:第一个字节表示Array型。

00 00 00 02:四个字节表示数组元素个数,当前数组元素个数两个。

key:

00 05:两个字节表示字符串的长度。

68 65 6c 6c 6f:字符串"hello"。

val:

00:表示val的类型为double型,则后面8个字节为一个double型。

7e 8f 00 00 00 00 00 00:表示一个double型的数,表示上面那个key对应的值。

key:

00 03:表示字符串的长度。

61 70 70:字符串"app"。

val:

02:表示该数据类型为字符串。

00 05:表示字符串的长度。

68 65 6c 6c 6f 00 7e 8f:字符串"hello",表示上面那个key对应的值。

到此也就把几个比较常见的类型用实例讲解了。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 解析 AMF(Action Message Format)可以使用 open-flash-remoting 扩展来实现。Open-flash-remoting 是一个用于 AMF 解析和处理的扩展,可以让 PHP 与 Flash 进行数据交互。 要解析 AMF 数据,首先需要安装 open-flash-remoting 扩展。可以通过以下步骤来完成安装: 1. 下载 open-flash-remoting 可执行程序(.dll 文件)对应的版本,确保与 PHP 的版本兼容。 2. 找到 PHP 安装目录下的 ext 文件夹,将下载的 .dll 文件复制到该文件夹中。 3. 打开 PHP 的配置文件(php.ini),找到并编辑以下行: ```ini ; Dynamic Extensions ; ... ; ... extension=php_open_flash remoting.dll ``` 4. 保存并关闭配置文件。 5. 重启 Web 服务器(例如 Apache)。 在成功安装了 open-flash-remoting 扩展后,就可以通过以下步骤来解析 AMF 数据: 1. 接收从 Flash 发送的 AMF 数据。 2. 使用 open-flash-remoting 扩展提供的函数,如 amf_decode(),来解析接收到的 AMF 数据。 3. 处理解析后的数据,根据数据类型和结构进行相应的操作,如存储到数据库、生成 HTML 内容等。 4. 将处理后的数据返回给 Flash 或其他需要的应用程序。 PHP 解析 AMF 数据的好处是,它可以实现更高效的数据交互,减少数据传输量和处理时间。AMF 是一种二进制格式,比起 XML 或 JSON 格式AMF 的数据量更小,解析速度更快,适用于需要频繁传输大量数据的应用场景,如在线游戏、聊天应用等。 总之,通过安装 open-flash-remoting 扩展,我们可以在 PHP 中解析和处理 AMF 数据,实现高效的数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值