提升 ASIO TCP 服务器架构
Boost ASIO TCP server architecture
我是boost和asio(但不是网络编程(的新手,我目前正在尝试创建一个接受多个客户端的TCP服务器。 带有客户端的服务器的主要功能很简单:
1-读取固定大小的标题;
2-解释它是什么样的请求,读取数据包的其余部分;
3-处理所有数据的请求;
4-返回步骤1。
这适用于基本请求,例如:检查凭据、启用 FTP 协议等... 但是有一个问题: 一个请求要求通过服务器与另一个连接的客户端进行通信。 但是,如果我遵循这个 Boost 网站示例中给出的 Boost Asio 架构
或者这次会议中的那个
我实际上无法访问其他客户端套接字,它们没有库存,它们由于智能指针的行为而存在。
我确实有一个解决这个问题的方法,它将连接的套接字保留在列表中,并与每个连接的套接字共享,因此每次客户端都可以访问其他客户端套接字。 但我真的认为这不是一个好的建筑,它可以更好。
有没有已知的方法来解决这个问题?
这是一个很好的方法:
- 服务器保留所有连接的客户端的套接字列表
- 每个客户端都会收到一个 ID(字符串或 int(,可以轻松地通过网络发送 ID 为"1"的
- 客户端向服务器发送 ID 为"2"的客户端的消息
- 服务器从"1"接收消息,并使用存储的套接字发送到"2">
这样,只有服务器保留套接字。所有客户端都使用 ID 来识别彼此。
相关文章:
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- 如何将 c++ 中的客户端 TCP 的替身列表发送到 Matlab 中的 TCP 服务器?
- 从 tcp 服务器打开 8MP H264 流时出现问题
- TCP C++客户端从C#服务器接收字节数组
- TCP套接字(客户端-服务器)recv()返回-1值
- 通过TCP将数据从C++客户端发送到JSON服务器
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- Qt TCP服务器不从客户端读取数据
- C++ TCP 服务器比较字符串失败
- 提升 ASIO TCP 服务器架构
- 如何让客户端通过modbus-tcp协议与多个服务器通信?
- C# 客户端到C++服务器 Tcp 套接字连接错误
- 连接后连接丢失 ->服务器 TCP 提升。亚西奥
- 使用qt的多客户端/服务器TCP应用程序
- C++客户端到Java服务器(TCP/IP)
- 简单的客户机/服务器TCP c++
- 多客户端一服务器TCP c++