2025年tcp server工具(tcpservice)

tcp server工具(tcpservice)对所有模块整合 实现一个服务器模块供外部快速搭建服务器 监听套接字 主 Reactor 创建 EventLoop baseloop 对象 进行对监听套接字的管理 哈希表管理所有新连接的 Channel 创建线程池进行连接的事件处理 设置线程数量 启动服务器 设置新连接回调函数 外部传入连接建立 业务处理

大家好,我是讯享网,很高兴认识大家。



对所有模块整合,实现一个服务器模块供外部快速搭建服务器。

监听套接字

主 Reactor,创建 EventLoop _baseloop 对象,进行对监听套接字的管理

哈希表管理所有新连接的 Channel

创建线程池进行连接的事件处理

设置线程数量

启动服务器

设置新连接回调函数(外部传入连接建立,业务处理,关闭连接,任意事件等待回调函数,TcpServer 再设置给 Connection 最后完成监听套接字的读事件回调函数)

是否启动非活跃连接定时销毁

添加定时任务

TcpServer 中创建 Acceptor 对象,并用 _baseloop 对象进行管理

Acceptor 读事件就绪,接收新连接,调用读事件回调函数

创建 Connection 管理新连接

设置新连接回调函数

启动 Connection 超时连接销毁

新连接绑定线程池中返回的下一个线程进行线程安全的事件监控

有事件就绪新连接就处理回调函数

分配接收到的新连接 id:uint64_t _connid;


讯享网

绑定端口号:int _port;

超时任务时间:int _timeout;

是否开启超时销毁:bool _inactive_release;

主 Reactor:EventLoop _baseloop;

监听套接字:Acceptor _acceptor;

线程池:LoopThreadPool _pool;

记录新连接:unordered_map<uint64_t, PtrConnection> _conns;

四个外部传入的回调函数:

using ConnectedCallback = function<void(const PtrConnection &)>;

using MessageCallback = function<void(const PtrConnection &, Buffer *)>;

using CloseCallback = function<void(const PtrConnection &)>;

using EventCallback = function<void(const PtrConnection &)>;

using Functor = function<void()>;

ConnectedCallback _connected_callback; // 连接建立后的回调函数

MessageCallback _message_callback;     // 业务处理的回调函数

CloseCallback _close_callback;         // 关闭连接的回调函数

EventCallback _event_callback;         // 任意事件的回调函数

新连接 id++

为新连接创建 Connection,并设置5个回调函数

开启非活跃连接销毁

新连接开始监控读事件

添加新连接

注意:要先非活跃再监控读事件,因为在读事件的回调里面有刷新任务,如果找不到任务队列就会报错

找到哈希表里面的指定连接删除

绑定 _baseloop 里面的 RunInLoop 函数

调用 _baseloop 里面的 TimerAdd 函数

主 Reactor 要在监听套接字之前初始化

线程池的构造不能在构造函数里面完成,要等线程池数量确定后在启动接口里面初始化

设置监听套接字的读回调函数后,启动监听

调用 _pool 里面的设置线程数量函数

设置非活跃标志位

设置延迟时间

绑定 _baseloop 里面的 RunInLoop 函数

线程池初始化

_baseloop 启动

有一个服务器删除连接回调已经在私有函数里面实现,用于新连接的5个回调函数实现

小讯
上一篇 2025-06-16 22:24
下一篇 2025-05-23 13:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/157759.html