gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:07 26 4
gpt4 key购买 nike

说明

我需要通过流(TCP 套接字或管道)在 C++、Java 和 Python 程序之间。

因此我的问题:

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

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

我想要什么

我的想法是这样的(对于 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,但这不支持流处理,并且需要在序列化之前创建完整的对象层次结构。

我也考虑过创建我自己的二进制格式,但这太麻烦了。

最佳答案

我建议明确记录您的数据类型是如何序列化的,并根据需要用每种语言编写序列化和反序列化代码。我过去发现,如果有关于如何序列化数据的良好文档,这将非常轻松。

您的另一个主要选择是在一个平台的默认序列化方法上进行标准化,但这意味着您必须找出该方法并用其他语言实现。这往往更棘手,因为默认的序列化方法通常很复杂并且没有很好的记录。

关于java - 如何通过流为 C++、Java 和 Python 交换二进制结构化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com