c++ - 客户端和服务器

标签 c++

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

应用程序#1 <--->(客户端)<--->(服务器)<--->应用程序#2

谢谢!

最佳答案

客户端/服务器是一种通用的架构模式(很像工厂、委托(delegate)、继承、桥接等设计模式)。您可能需要一个库来消除以可通过网络发送的格式打包和解包数据的单调乏味。我强烈建议你看看 protocol buffers库,它在谷歌被广泛使用并作为开源发布。它会自动编码/解码数据,它可以让用不同语言编写的程序发送和接收相同类型的消息,并自动为您完成所有脏工作。 Protobuf 只处理编码,并不实际发送和接收。为此,您可以使用原始套接字(强烈建议不要这样做)或 Boost.Asio异步 I/O 库。

我应该补充一点,您似乎对客户端和服务器的含义感到困惑,因为在您的图表中,应用程序与客户端对话,客户端与服务器对话,服务器与另一个应用程序对话。这是错误的。您的应用程序是客户端(或服务器)。客户端/服务器只是您的应用程序在通信过程中所扮演的角色。当应用程序发起连接或请求时,它被认为是客户端,而当它等待和处理传入请求时,应用程序被认为是服务器。客户端/服务器只是描述应用程序行为的术语。

关于c++ - 客户端和服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368403/

相关文章:

c++ - 无法在 Visual Studio 和 vcpkg 中构建 cmake 项目( fatal error C1083)

c++ - 二维数组初始化值

c++ - 包括库 C++

c++ - 在渲染 C++ 之前从视频源编辑帧

ros Jade 的 c++ opencv 设置

c++ - 指针未定义

c++ - 在 DLL 中打开共享文件

c++ - 友元是在 C++ 中继承的吗?

c++ - 在 opencv 中使用 imwrite 保存图像写入全黑但 imshow 显示正确

c++ - 无法从 dll、vs2010、c++ 导出类