这是异步服务器的初始版本(Simple Version)。
-
半双工通信 (Half-Duplex):
- 逻辑流程是:
Read->HandleRead->Write->HandleWrite->Read。 - 在发送数据期间,服务器停止接收新数据。
- 这种模式类似于"对讲机",一方说完另一方才能说。
- 逻辑流程是:
-
简单的缓冲区管理:
- 使用
MsgNode或简单的char数组进行数据收发。 - 没有发送队列,如果连续调用
Send,可能会导致数据交错或崩溃(因为async_write不能在同一个 socket 上并发调用)。
- 使用
- 性能瓶颈: 发送耗时会阻塞接收。
- 逻辑缺陷: 如果客户端连续发送多条消息,服务器可能因为正在处理上一条的发送而无法及时读取,导致 TCP 缓冲区堆积。
- 线程安全: 缺乏对并发发送的保护。
- 实现全双工通信(读写分离)。
- 引入发送队列 (
std::queue) 保证发送顺序。 - 使用
strand或mutex保证线程安全。