繁体   English   中英

Boost ASIO TCP 服务器架构

[英]Boost ASIO TCP server architecture

我是 boost 和 asio 的新手(但不是网络编程),我目前正在尝试创建一个接受多个客户端的 TCP 服务器。 带有客户端的服务器的主要功能很简单:

1-读取一个固定大小的Header;

2-解释它是什么类型的请求,阅读数据包的其余部分;

3- 处理包含所有数据的请求;

4- 回到步骤 1。

这适用于基本请求,例如:检查凭据、启用 FTP 协议等...但是有一个问题:一个请求需要通过服务器与另一个连接的客户端进行通信。 但是,如果我遵循Boost 网站示例中给出的 Boost Asio 架构

或者这个会议上的那个

我实际上无法访问其他客户端套接字,它们没有库存,它们的生存归功于智能指针的行为。

对于这个问题,我确实有一个解决方案,它将连接的套接字保留在列表中,并与每个连接的套接字共享,因此每次客户端都可以访问其他客户端的套接字。 但我真的认为这不是一个好的架构,它可以更好。

有没有已知的方法来解决这个问题?

这是一个很好的方法:

  • 服务器为所有连接的客户端保留套接字列表
  • 每个客户端都会收到一个可以轻松通过网络发送的 ID(字符串或整数)
  • ID 为“1”的客户端向服务器发送一条消息给 ID 为“2”的客户端
  • 服务器从“1”接收消息并使用存储的套接字发送到“2”

这样只有服务器保留套接字。 所有客户端都使用 ID 来识别彼此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM