1

我有一条消息 Image ,其中包含很多东西,还有一条消息 ImageSet ,它存储了多个图像。

message Image {
    ...
}
message ImageSet {
    repeated Image images = 1;
}

我也有多个 ImageSet,因为我不想将所有内容都保存在一个文件中。我遇到的问题是每个 ImageSet 都变得非常大,因此我收到警告/错误。有没有更好的设计方法?

请注意,我像这样解析文件。

ImageSet image_set;
image_set.ParseFromIstream(stream);
4

1 回答 1

0

您不必使用 protobuf-messages 来发送您的图像数据对象。你可以设计这样的东西来描述图像:

message Image {
    required int64 bytes_size = 1;
}

message ImageSet {
    repeated Image images = 1;
}

指定您发送的每个图像数据的计数和大小。不仅仅是通过套接字在您的消息之后发送图像日期并以相同的顺序在另一侧阅读。

在发件人方面:

socket.write(protobuf_message_size); // for example 8 bytes    
socket.write(protobuf_message);
socket.write(binary_images_data);
于 2013-03-04T05:46:51.273 回答