客户端和服务器

时间:2010-07-30 02:43:35

标签: c++

我想在两个应用程序之间创建连接。我应该使用Client-Server还是有另一种方式在彼此之间进行有效通信?是否有任何易于使用/重用和实现的预制C ++网络客户端服务器库?

申请#1< ---> (客户)< ---> (服务器)< --->申请#2

谢谢!

2 个答案:

答案 0 :(得分:5)

客户端/服务器是一种通用的体系结构模式(很像工厂,委托,继承,桥接是设计模式)。你可能想要的是一个库来消除包装和解压缩数据的繁琐,这种格式可以通过网络发送。我强烈建议您查看protocol buffers库,该库在Google上广泛使用并作为开源发布。它将自动编码/解码数据,这使得用不同语言编写的程序可以发送和接收相同类型的消息,并自动为您完成所有脏工作。 Protobuf只处理编码,而不是实际的发送和接收。为此,您可以使用原始套接字(强烈建议使用它)或Boost.Asio异步I / O库。

我应该补充一点,你似乎对客户端和服务器的含义感到困惑,因为在你的图表中,你让应用程序与客户端交谈,该客户端与一个与另一个应用程序通信的服务器进行通信。这是错的。您的应用程序是客户端(或服务器)。客户端/服务器只是应用程序在通信期间所处理的角色。应用程序在启动连接或请求时被视为客户端,而应用程序在等待和处理传入请求时被视为服务器。客户端/服务器只是描述应用程序行为的术语。

答案 1 :(得分:1)

如果您知道应用程序将在同一台计算机上运行,​​则可以使用套接字,消息队列,管道或共享内存。您选择哪个选项取决于很多因素。

这些策略以及库中都有大量示例代码可以抽象出很多细节。

如果它们在不同的计算机上运行,​​您将需要通过套接字进行通信。

There's a tutorial here, with decent code samples.