目前我正在开发一个C / C ++跨平台客户端/服务器软件。在低级套接字开发方面,我是非常有经验的开发人员。 Berkley套接字/ Winsock的问题在于,你总是必须使用某种解析器才能在接收器端正确处理问题。我的意思是,你必须解释数据,并连接数据包才能正确传输。 (包经常被切成片)
请记住,通信将是双向的。纯套接字是现在传输数据的最佳方式吗?您是否会向此应用程序推荐SOAP,Webservices或其他类型的封装?
答案 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)和二进制序列化都有很好的支持。它也是跨平台的。