【发布时间】:2014-04-24 21:44:38
【问题描述】:
非常有帮助的人:
这是另一个新手问题。我是 C++、Google 协议缓冲区和不使用 SOAP 的 HTTP 序列化消息的新手(即使使用 SOAP 也是如此)。我正在尝试通过 http 发送图像数据。有人告诉我 Google Protocol Buffers 是要走的路。因此,我急切地开始阅读所有文档,并使用 CocoaPods 安装 Google Protocol Buffer 类并将其包含到我的项目中。我创建了我的 .protoc 文件并生成了类。现在我正在使用生成的类填充数据。现在呢???
我找不到有关如何发送数据的任何信息。我发现了一些关于 SO 的其他问题,如果我有线索的话,这些问题可能是有意义的信息。这是我目前所拥有的:
void message::myMessage::transmit(const uint32_t ipaddress, uint32_t port, message::MatMessage* rawImage)
{
message::HostMessage *transmitter;
transmitter->set_ipaddress(ipaddress);
transmitter->set_port(port);
//open socket with ip and port
//send unsing socket
}
HostMessage (*transmitter) 是从仅包含 ipAddress 和端口号的 .protoc 文件生成的 C++ 类和标头。好的,所以我有这个带有 ipaddress 和端口的发射器。怎么办?我如何用它打开一个套接字?
也许一旦我打开一个套接字,其他答案对我来说会更有意义。有人可以帮我解惑吗?
谢谢。
【问题讨论】:
-
您需要自己编写套接字代码,协议缓冲区并没有提供太多帮助。为您的平台读取套接字,创建/连接端点,序列化协议缓冲区消息(例如使用 ArrayInputStream 和 CodedInputStream 或 SerializeToString),写入数据包长度,然后写入数据,在接收端读取数据包长度,然后读取数据,并反序列化数据(ParseFromCodedStream)。通过一些搜索,您会在这里和那里找到一些经历序列化/反序列化过程的示例。
标签: c++ sockets protocol-buffers