muduo库学习之设计与实现13——TcpClient

东阳的学习笔记

有了 Connector、TcpClient就不难实现了,它的代码和 TcpServer 甚至有几分相似(都有 newConnection 和 removeConnection()这两个成员函数),只不过每个TcpClient只管理一个 TcpConnection。代码从略。

一、要点

  1. TcpClient 具备 TcpConnection 断开之后重新连接的功能,加上 Connector 具备反复尝试连接的功能,因此客户端与服务端之间的启动先后无所谓。
  2. 连接断开后初次重试的延迟应该有随机性。因为若同时发起连接,容易:
    • 可能造成 SYN 丢包
    • 可能给服务器带来短期大负载,影响服务质量
  3. 发起连接的时候若发生TCP SYN 丢包,那么系统默认的重试间隔是 3s,这期间不会返回错误码。这个间隔不容易修改。如果需要缩短间隔,那么可以使用定时器在0.5s 或 1s 后发起另一次连接。如果有这个需求,可以做到 Connector 中
  4. 目前的TcpClient没有充分测试动态增减的情况,也就是说:
    • 没有充分测试 TcpClient 的生命期比 EventLoop 短的情况
    • 特别好是,没有充分测试 TcpClient 在连接建立期间析构的情况

猜你喜欢

转载自blog.csdn.net/qq_22473333/article/details/113759242