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

本文讨论了TcpClient如何实现与TcpServer的连接管理,特别是断开后的重连功能。强调了连接断开后初次重试的延迟应具随机性以避免同步连接问题,同时提到了Connector中可能的短连接重试策略。然而,TcpClient在动态增减及生命期管理方面的测试不足,需要进一步完善。
摘要由CSDN通过智能技术生成

东阳的学习笔记

有了 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 在连接建立期间析构的情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东阳z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值