首页 > 代码库 > AMFObject数据格式解析
AMFObject数据格式解析
AMF
AMF是Action Message Format的简写,它是一种二进制的数据格式。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制数据,然后把这段数据随意发送给其他接收方程序,比如发给远程的服务器,在远程服务器那边,可以把这段数据给还原出来,以此达到一个数据传输的作用。
为什么要用AMF
通常情况下我们使用JSON或者XML来做数据的传输,他们的好处是文本数据易读、容易修改,坏处在于文本数据体积较大,而且数据的组织有其局限性。那么二进制协议是不是只有AMF一个呢? 答案明显是否定的,你完全可以自定义自己的二进制数据格式,用AMF只是由于它是现成的,拿来即可用,不用重新去发明轮子。
AMFObject详解
amf.h中关于 AMFObject 是这样的定义的:
typedef struct AMFObject { int o_num; struct AMFObjectProperty *o_props; } AMFObject;
AMFObject表示AMF对象,o_num 代表 o_props的个数, 一个对象内部可以包含N个对象属性;
typedef struct AMFObjectProperty { AVal p_name; AMFDataType p_type; union { double p_number; AVal p_aval; AMFObject p_object; } p_vu; int16_t p_UTCoffset; } AMFObjectProperty;
AMFObject表示AMF对象属性,即key-value键值对。p_name表示key;p_type表示value的类型;p_vu表示value的数值。
p_vu设置为联合体的目的:
当p_type为number时, m_vu取值double类型 p_number;
当p_type为string时, m_vu取值AVal类型 p_aval;
当p_type为object时, m_vu取值AMFObject类型 p_object。
AMFObject数据格式解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。