首页 > 其他 > 详细

AMFObject数据格式解析

时间:2017-06-23 14:00:19      阅读:284      评论:0      收藏:0      [点我收藏+]

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数据格式解析

原文:http://www.cnblogs.com/Kingfans/p/7069542.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!