muduo库的学习8---TcpServer与TcpClient的基本设计---TcpServer
2016-02-29 11:33
253 查看
1.类结构图
2.数据成员
①basics
由此可以看出,TcpServer结构相当地简单。
一个accpetor用于处理连接请求
一个连接集合,connections表示所有的连接。这个集合用Map来表示的。
②callbacks
这是给TcpConnection用的回调函数,在TcpServer类外定义,然后存放在TcpServer中
在新的connection建立时,又由TcpServer传给TcpConnection。
3.函数成员
(1)basics
①构造函数TcpServer()
构造的时候会初始化,acceptor
给acceptor建立listenfd,listenChannel,并将TcpServer::newConnection传递给listenChannel作为回调。
表示在连接请求到来的时候应该做什么。
②start()
在构造完成,设置回调完成之后,用acceptor->listen()。
其内部实现当然是,使得表示acceptor的listenChannel在EventLoop中开始监听。
(2)callbacks
在构造函数初始化完成之后,用户会传递给TcpServer当TcpConnetion建立之后各种事件下将要干什么。
通过调用这里面的函数,实现callback的传递。
(3)oprations on TcpConnections
①newConnection
这个函数在acceptor收到了连接请求时回调。
我们看看它究竟干了些什么
A。new一个TcpConnection然后将其放入connection之中。
这个connection的connChannel的回调函数设置会在其构造函数中完成。
B。进行各种setCallback
前面不是提到了,TcpServer里面存放了各种callback吗,在这里传递给TcpConnetion
C。调用TcpConnection::connectionEstablished
这个会enable TcpConnection的channel进入监听状态
然后调用connectionCallback
②removeConnection
做两件事
A。将conn从connections里面erase
B。调用TcpConnectionDestroyed
它会使channel移出监听队列
class TcpServer { /*************Function Member*********************/ //basics TcpServer(); void start(); //callbacks void setConnectionCallback(const ConnectionCallback& cb); void setMessageCallback(const MessageCallback& cb); void setWriteCompleteCallback(const WriteCompleteCallback& cb); //operations on TcpConnections void newConnection(int sockfd, const InetAddress& peerAddr); void removeConnection(const TcpConnectionPtr& conn); /****************Data Member*************************/ typedef std::map<string, TcpConnectionPtr> ConnectionMap; //basics boost::scoped_ptr<Acceptor> acceptor; ConnectionMap connections; //callbacks ConnectionCallback connectionCallback; MessageCallback messageCallback; WriteCompleteCallback writeCompleteCallback; };
2.数据成员
①basics
由此可以看出,TcpServer结构相当地简单。
一个accpetor用于处理连接请求
一个连接集合,connections表示所有的连接。这个集合用Map来表示的。
②callbacks
这是给TcpConnection用的回调函数,在TcpServer类外定义,然后存放在TcpServer中
在新的connection建立时,又由TcpServer传给TcpConnection。
3.函数成员
(1)basics
①构造函数TcpServer()
构造的时候会初始化,acceptor
给acceptor建立listenfd,listenChannel,并将TcpServer::newConnection传递给listenChannel作为回调。
表示在连接请求到来的时候应该做什么。
②start()
在构造完成,设置回调完成之后,用acceptor->listen()。
其内部实现当然是,使得表示acceptor的listenChannel在EventLoop中开始监听。
(2)callbacks
在构造函数初始化完成之后,用户会传递给TcpServer当TcpConnetion建立之后各种事件下将要干什么。
通过调用这里面的函数,实现callback的传递。
(3)oprations on TcpConnections
①newConnection
这个函数在acceptor收到了连接请求时回调。
我们看看它究竟干了些什么
A。new一个TcpConnection然后将其放入connection之中。
这个connection的connChannel的回调函数设置会在其构造函数中完成。
B。进行各种setCallback
前面不是提到了,TcpServer里面存放了各种callback吗,在这里传递给TcpConnetion
C。调用TcpConnection::connectionEstablished
这个会enable TcpConnection的channel进入监听状态
然后调用connectionCallback
②removeConnection
做两件事
A。将conn从connections里面erase
B。调用TcpConnectionDestroyed
它会使channel移出监听队列
相关文章推荐
- muduo库的学习7---TcpServer与TcpClient的基本设计---总论
- 理解 Linux 网络栈(1):Linux 网络协议栈简单总结
- HttpUrlConnection加载网络
- spring整合dubbo-2.5.3(使用TCP广播或者zookeeper 暴露和发现服务)
- Java 网络编程(六) 使用无连接的数据报(UDP)进行通信
- IPC网络摄像机app端开发问题解决思路
- python网络编程之socket
- 4.18.1 Android Http 与断点续传
- 解决GoAgent打开https网站SSL证书错误 (安全证书不受信任)
- wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理
- 网络请求设置 && arc&mrc互转
- 4.1.3.9 监听网络状态,3G,WIFI,
- Mac网络优先级设置
- python模拟登录http basic authentication网站
- HDU 1083 网络流之二分图匹配
- 人工神经网络NN
- 为Android频繁的网络请求设置本地缓存
- VirtualBox四种网络连接方式的区别联系
- 4.1.3 Android 监听网络状态+源代码
- 携程App的网络性能优化实践