- 博客(3)
- 收藏
- 关注
原创 muduo源码剖析-接受数据和发送数据
1 接受数据 客户端与服务器建立连接,就有了一个TcpConnection对象,该TcpConnection对象包含客户端套接字文件描述符,对应的channel,以及所属的EventLoop对象。上述三个TcpConnection对象非常重要的数据成员,他们标识了这个TcpConnection对象的身份。TcpConnection对象还拥有inputBuffer_和outputBuffer_两个重要数据成员,用于接受数据和发送数据。 当事件循环收到可读事件的到来时,会调用fd对应的channel的读事件的回
2020-07-30 10:45:27
380
原创 muduo源码剖析-TcpServer连接关闭
Server关闭连接的情况有两种,一种是被动关闭,即对方先关闭连接,本地read(2)返回零,触发关闭逻辑。另一种是主动断开连接,即调用TcpConnection::forceClose()函数。 1 被动关闭 时序图如下 对方关闭时,read(2)会收到0字节,因此触发关闭逻辑。首先loop事件循环中channel触发handleEvent,然后调用readCallback_(),readCallback_在TcpConnection的构造函数中已绑定在TTcpConnection::handleRea
2020-07-29 17:04:30
503
1
原创 muduo源码剖析-TcpServer接受新连接
muduo源码剖析-TcpServer接受新连接 首先启动Tcpserver.start()以及loop->loop() Tcpserver.start(); loop->loop(); 看一下Tcpserver.start()的逻辑 void TcpServer::start() //启动线程池并且注册监听事件` { if (started_.getAndSet(1) == 0) { threadPool_->start(threadInitCallback_);//启
2020-07-29 10:19:43
151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人