什么是在C / C ++上传输数据的最佳(最简单)方法

时间:2010-01-07 12:19:51

标签: c++ c web-services sockets soap

目前我正在开发一个C / C ++跨平台客户端/服务器软件。在低级套接字开发方面,我是非常有经验的开发人员。 Berkley套接字/ Winsock的问题在于,你总是必须使用某种解析器才能在接收器端正确处理问题。我的意思是,你必须解释数据,并连接数据包才能正确传输。 (包经常被切成片)

请记住,通信将是双向的。纯套接字是现在传输数据的最佳方式吗?您是否会向此应用程序推荐SOAP,Webservices或其他类型的封装?

3 个答案:

答案 0 :(得分:4)

我强烈推荐Google Protocol Buffers

答案 1 :(得分:1)

现在很多人使用Web服务和SOAP。有可用于此目的的C ++包。这些将为您使用套接字并处理所有数据争用。如果您使用的是Unix / Linux,请提供或使用System V.4网络句柄,您的数据最终将通过套接字传输。

在Windows上,如果您只想与其他Windows框进行通信,还有其他选择。

您也可以查看CORBA,但这不是常见做法。

答案 2 :(得分:1)

在任何数据传输中,都需要序列化和反序列化对象。

您要问的第一个问题是您是否需要二进制或文本格式进行传输。二进制数据格式具有明显的优势,它们完全易于解析(前提是它们是简单的POD结构 - 您可以将它们转换为结构)。

基于文本的传输应该更容易调试,因为您只需阅读文本。你仍然需要解析它们。

基于SOAP的Web服务是通过HTTP正常发送的基于XML的简单数据包。有些东西需要解析HTTP和XML。易用性不是内在的,而是取决于您可以使用的工具。如果你有好的工具,那么这一切都适用于任何形式的数据交换。

您可以查看Boost Serialization Library。它是一个相当复杂的库,需要您编写指示成员需要序列化的代码。 IT确实对文本(包括xml)和二进制序列化都有很好的支持。它也是跨平台的。