c++ - 本地网络运行的客户端服务器架构

标签 c++ networking client-server boost-asio local

我需要建议,可能对我的问题有一些想法:
Process1 - 在单独的线程中运行服务器并运行客户端的主进程。
Process2 - 客户端,进行一些工作并将工作结果发送到服务器。


来自客户端的通信:
第一次发送 - 消息类型
二维发送-数据
3d 读取 - 来自服务器的回答


服务器端的通信:
第一次阅读 - 消息类型
二维读取数据
- 处理数据
- 将答案发送给客户


一些约束:
- 该程序应该能够在本地和网络中运行。
- Process2 的数量可以在 6000 左右
- C++ 语言 boost::asio 库

当前解决方案: 我有异步客户端。哪个完成工作并运行客户端以发送结果。 服务器在循环中接受客户端,当客户端接受时,服务器创建线程并处理通信。

注意事项!对于本地运行,一次 Process2 的数量等于处理器内核数。

您认为这个解决方案有什么好处,或者我是否应该使用其他方法?

最佳答案

你不需要为'Process1'中的每个客户端创建线程,你可以使用异步函数(带有前缀'async_')来避免阻塞,所以所有的客户端都可以在一个线程中运行。

引用: https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp

关于c++ - 本地网络运行的客户端服务器架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988076/

相关文章:

java - 从套接字读取时获取空字符串

java - 具有单个目标网络的Linux多网关

ios - CoreData 嵌套上下文 : what is the proper way to save context?

ios - 我的 iOS 应用应该使用什么类型的数据存储?

c++ - 线程安全的 cout 技术。我错过了什么吗?

c# - TcpListener: "All Unassigned IP"地址类似功能

java - 在 Android Java 中从客户端使用 GET\POST 调用服务器方法

c++ - 获取标记之间的子字符串

c++ - 尝试替换字符串数组的元素,但只能在该位置输入新字符串。 C++

c++ - 嵌套类和对外部类的引用 (c++)