msgpack-c, C 和 C++/msgpack. 组织 [C/C++ ]的MessagePack实现

分享于 

6分钟阅读

GitHub

  繁體 雙語
MessagePack implementation for C and C++
  • 源代码名称:msgpack-c
  • 源代码网址:http://www.github.com/msgpack/msgpack-c
  • msgpack-c源代码文档
  • msgpack-c源代码下载
  • Git URL:
    git://www.github.com/msgpack/msgpack-c.git
    Git Clone代码到本地:
    git clone http://www.github.com/msgpack/msgpack-c
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/msgpack/msgpack-c
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    用于c/c+ +的 msgpack

    版本 2.1.5

    它像JSON但又小又快。

    概述

    是一种高效的二进制序列化格式,它允许你在多种语言( 如 JSON ) 之间交换数据,但它的速度更快,更简单。 小整数被编码成单个字节,而典型的短字符串只需要一个额外字节即可以。

    示例

    在C 中:

    #include<msgpack.h>#include<stdio.h>intmain(void)
    {
     /* msgpack::sbuffer is a simple buffer implementation. */ msgpack_sbuffer sbuf;
     msgpack_sbuffer_init(&sbuf);
     /* serialize values into the buffer using msgpack_sbuffer_write callback function. */ msgpack_packer pk;
     msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write);
     msgpack_pack_array(&pk, 3);
     msgpack_pack_int(&pk, 1);
     msgpack_pack_true(&pk);
     msgpack_pack_str(&pk, 7);
     msgpack_pack_str_body(&pk, "example", 7);
     /* deserialize the buffer into msgpack_object instance. *//* deserialized object is valid during the msgpack_zone instance alive. */ msgpack_zone mempool;
     msgpack_zone_init(&mempool, 2048);
     msgpack_object deserialized;
     msgpack_unpack(sbuf.data, sbuf.size, NULL, &mempool, &deserialized);
     /* print the deserialized object. */msgpack_object_print(stdout, deserialized);
     puts("");
     msgpack_zone_destroy(&mempool);
     msgpack_sbuffer_destroy(&sbuf);
     return0;
    }

    有关详细信息,请参阅 QUICKSTART-C.md

    在 C++ 中:

    #include<msgpack.hpp>#include<string>#include<iostream>#include<sstream>intmain(void)
    {
     msgpack::type::tuple<int, bool, std::string> src(1, true, "example");
     // serialize the object into the buffer.// any classes that implements write(const char*,size_t) can be a buffer. std::stringstream buffer;
     msgpack::pack(buffer, src);
     // send the buffer.. . buffer.seekg(0);
     // deserialize the buffer into msgpack::object instance. std::string str(buffer.str());
     msgpack::object_handle oh =
     msgpack::unpack(str.data(), str.size());
     // deserialized object is valid during the msgpack::object_handle instance is alive. msgpack::object deserialized = oh.get();
     // msgpack::object supports ostream. std::cout <<deserialized <<std::endl;
     // convert msgpack::object instance into the original type.// if the type is mismatched, it throws msgpack::type_error exception. msgpack::type::tuple<int, bool, std::string> dst;
     deserialized.convert(dst);
     return0;
    }

    有关详细信息,请参阅 QUICKSTART-CPP.md

    用法

    C++ 头文件库

    在C++03和C++11上使用msgpack时,只需将 msgpack-c/include添加到包含路径中:

    
    g++ -I msgpack-c/include your_source_file.cpp
    
    
    
    

    如果要使用msgpack版本,则需要构建它。 你还可以安装msgpack的C 和 C++ 版本。

    建筑和安装

    使用终端( CLI ) 从git存储库安装中安装

    你将需要:

    • gcc> = 4.1.0
    • cmake> = 2.8.0

    C 和 C++03:

    
    $ git clone https://github.com/msgpack/msgpack-c.git
    
    
    $ cd msgpack-c
    
    
    $ cmake. 
    
    
    $ make
    
    
    $ sudo make install
    
    
    
    

    如果要设置C++11版本的msgpack,请执行以下命令:

    
    $ git clone https://github.com/msgpack/msgpack-c.git
    
    
    $ cd msgpack-c
    
    
    $ cmake -DMSGPACK_CXX11=ON. 
    
    
    $ sudo make install
    
    
    
    
    Windows 上的 GUI

    克隆 msgpack git仓库。

    
    $ git clone https://github.com/msgpack/msgpack-c.git
    
    
    
    

    或者使用GUI客户端。

    比如 ) turtle git https://code.google.com/p/tortoisegit/

    启动 cmake GUI客户端

    设置'。源代码在哪里:'文本框和'在哪里生成二进制文件:'文本框。

    单击'配置'按钮。

    选择你的Visual Studio 版本。

    单击'生成'按钮。

    打开 Visual Studio 上创建的msgpack.sln。

    全部生成。

    文档

    你可以在 中获得其他信息。

    msgpack-c GitHub上开发 msgpack/msgpack-c。 要报告问题或者发送请求请求,请使用问题跟踪程序( )。

    下面是伟大贡献者的列表。

    许可证

    msgpack-c 是在Boost软件许可下许可的,版本 1.0. 有关详细信息,请参阅 LICENSE_1_0.txt 文件。


    相关文章