C / C ++中的简单广播库/示例

时间:2011-05-03 17:26:12

标签: c++ c sockets broadcast

我正在整理一个用C / C ++编写的客户端/服务器应用程序。它主要是带有一些C ++特性的C - 我来自C和Java世界,并没有使用大量高级C ++语言特性。在任何情况下,服务器驻留在一台计算机上并进行各种内部计算,并且每天多次(在不可预测的时间)它将信息广播到已经向服务器注册的一些客户端(驻留在其他计算机上)听这样的广播消息。服务器必须能够以100%的可靠性和非常快的速度向所有注册的客户端广播,以便客户端可以更新自己的内部数据以反映服务器中的状态更改 - 服务器刚刚向其广播的状态更改。由于它必须是可靠的,它必须是TCP / IP,而不是UDP。

这似乎是一个非常标准的C ++网络架构,但我想找到一个很好的库,可以让我轻松地做到这一点(WinSock库的某种包装,以便我可以轻松地完成它Windows无需深入了解WinSock的特定怪癖)以及一个如何做这类事情的简单示例。

感谢。

3 个答案:

答案 0 :(得分:2)

结帐boost::asio。他们的例子可以在这里找到:http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/examples.html

它抽象了大多数特定于平台的怪癖,因此您可以快速开展业务。

答案 1 :(得分:1)

有两个来自免费和开源世界的C / C ++网络通信库 - 摇滚 - LibEventBoost.Asio。使用它们,您无需深入了解操作系统的细节或网络通信的特定API。他们都有很好的文档和一套体面的examples

作为旁注,即使使用TCP / IP,从更高的角度来看也不能使通信协议可靠。为了提供可靠性,应用程序通常在TCP / IP之上定义更高级别的协议。这些协议描述了消息,心跳,重传支持等的排序。还有基于UDP构建的可靠协议(所谓的RUDP)。

如果您觉得速度和可靠性非常重要,您可能需要使用行业领先的技术之一,例如Tibco,LBM(Informatica / 29West)或Tervela。所有这些解决方案都可以在不同的通信协议之上工作,同时为用户提供无缝的API。

答案 2 :(得分:0)

这需要相当数量的C ++功能(模板等),但boost::asio非常出色,正是您完成此任务所需的功能。但是,它显然需要一些习惯,因为编程模型与直接C ++完全不同。网站上有很好的文档和很多例子。