• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何通过流为C++,Java和Python交换二进制结构化数据?

binary-data 11次浏览

说明
我需要通过流(TCP套接字或
C++,Java和Python程序之间的管道)。
因此我的问题是:
如何在流上为C++,Java和Python交换二进制结构化数据?

  • 无法预先创建要序列化的完整对象-必须有流入和流出数据的可能性。
  • 由于性能问题,我需要一些二进制协议(protocol)格式。
  • 我想使用(如果可能的话)一些现有的库,因为手工制作所有的(反序列化)是一种痛苦。
  • 我想要的是

    我的想法是(对于C++作家):

     StreamWriter sw(7);  // fd to output to.
    
     while( (DataSet const ds(get_next_row_from_db())) ) {
        sw << ds;  // data set is some structured data
     }
    

    对于C++阅读器

    StreamReader sr(9);  // fd for input
    
    while(sr) {
       DataSet const ds(sr);
    
       // handle ds
    }
    

    具有与Java和Python类似的语法和语义。

    我做了什么

    我考虑过使用现有的库(例如Google Protocol Buffers),但这不支持流处理,因此需要在序列化之前创建完整的对象层次结构。

    另外,尽管我要创建自己的二进制格式,但这是太多的工作和痛苦。

    解决方案如下:

    我建议您明确记录如何对数据类型进行序列化,并根据需要用每种语言编写序列化和反序列化代码。过去我发现,有了关于如何序列化数据的良好文档,这是相当容易的。

    您的另一个主要选择是标准化一种平台的默认序列化方法,但这意味着您必须弄清楚该方法并以其他语言实现。由于默认的序列化方法通常很复杂且没有充分的文档记录,因此这往往比较棘手。


    版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
    喜欢 (0)