当前位置: 首页 > news >正文

seo优化提升排名东莞关键词优化效果

seo优化提升排名,东莞关键词优化效果,网上贸易平台有哪些,网站建设云尚网络简介 Acceptor类用于创建套接字#xff0c;设置套接字选项#xff0c;调用socket()-bind()-listen()-accept()函数#xff0c;接受连接#xff0c;然后调用TcpServer设置的connect事件的回调。 listen()//在TcpServer::start中调用 封装了一个listen fd相关…简介 Acceptor类用于创建套接字设置套接字选项调用socket()-bind()-listen()-accept()函数接受连接然后调用TcpServer设置的connect事件的回调。 listen()//在TcpServer::start中调用 封装了一个listen fd相关的操作,用于mainLoop 成员及属性解析 Acceptor - 逻辑上的内部类 接受器封装实质上就是对Channel的多一层封装 主要接口 listen 监听连接 当新连接进入时调用Socket::accept创建套接字触发TcpServer的回调 setNewConnectionCallback TcpServer通过该接口设置回调当新连接套接字创建后创建TcpConnection对象 核心实现 通过socket::accept接受新连接获得套接字fd 这个fd作为参数调用TcpServer注册的回调 主要成员 loopchannelidlefd 非常巧妙的设计在服务器压力过大无法新建文件描述符时通过这个idlefd拒绝连接 来自libevent的设计 源码剖析 Acceptor.h #ifndef MUDUO_NET_ACCEPTOR_H #define MUDUO_NET_ACCEPTOR_H#include functional#include muduo/net/Channel.h #include muduo/net/Socket.hnamespace muduo { namespace net { class EventLoop; class InetAddress;/// /// Acceptor of incoming TCP connections. /// class Acceptor : noncopyable {public:typedef std::functionvoid (int sockfd, const InetAddress) NewConnectionCallback;Acceptor(EventLoop* loop, const InetAddress listenAddr, bool reuseport);~Acceptor();void setNewConnectionCallback(const NewConnectionCallback cb){ newConnectionCallback_ cb; }void listen();bool listening() const { return listening_; }// Deprecated, use the correct spelling one above.// Leave the wrong spelling here in case one needs to grep it for error messages.// bool listenning() const { return listening(); }private:void handleRead();EventLoop* loop_;Socket acceptSocket_;Channel acceptChannel_;NewConnectionCallback newConnectionCallback_;bool listening_;int idleFd_; };} // namespace net } // namespace muduo#endif // MUDUO_NET_ACCEPTOR_HAcceptor.cc // Copyright 2010, Shuo Chen. All rights reserved. // http://code.google.com/p/muduo/ // // Use of this source code is governed by a BSD-style license // that can be found in the License file.// Author: Shuo Chen (chenshuo at chenshuo dot com)#include muduo/net/Acceptor.h#include muduo/base/Logging.h #include muduo/net/EventLoop.h #include muduo/net/InetAddress.h #include muduo/net/SocketsOps.h#include errno.h #include fcntl.h //#include sys/types.h //#include sys/stat.h #include unistd.husing namespace muduo; using namespace muduo::net;Acceptor::Acceptor(EventLoop* loop, const InetAddress listenAddr, bool reuseport): loop_(loop),acceptSocket_(sockets::createNonblockingOrDie(listenAddr.family())),//创建一个非阻塞的socket fdacceptChannel_(loop, acceptSocket_.fd()),//创建socket fd的channellistening_(false),//是否处于监听状态idleFd_(::open(/dev/null, O_RDONLY | O_CLOEXEC)) {assert(idleFd_ 0);acceptSocket_.setReuseAddr(true); //设置ip地址复用acceptSocket_.setReusePort(reuseport); //设置端口复用acceptSocket_.bindAddress(listenAddr); //bind()函数封装,绑定ip和端口acceptChannel_.setReadCallback(std::bind(Acceptor::handleRead, this));//设置accept的回调函数 }Acceptor::~Acceptor() {acceptChannel_.disableAll();//将mainloop poller监听集合中移除,取消所有事件的监听acceptChannel_.remove();//在events_删除channel::close(idleFd_);//关闭文件 }void Acceptor::listen()//开始监听fd {loop_-assertInLoopThread();//判断是不是和创建时的io线程处于同一个线程listening_ true;//是否监听acceptSocket_.listen();//真正的监听函数acceptChannel_.enableReading();//设置监听读事件 }void Acceptor::handleRead()//当有client connnect时,则会调用 {loop_-assertInLoopThread();InetAddress peerAddr;//FIXME loop until no moreint connfd acceptSocket_.accept(peerAddr);//接收client connect,返回值accept()返回值if (connfd 0){// string hostport peerAddr.toIpPort();// LOG_TRACE Accepts of hostport;if (newConnectionCallback_)//如果设置了connect cb,则调用,否则则关闭这个连接{newConnectionCallback_(connfd, peerAddr);}else{sockets::close(connfd);}}else{LOG_SYSERR in Acceptor::handleRead;// Read the section named The special problem of// accept()ing when you cant in libevs doc.// By Marc Lehmann, author of libev.if (errno EMFILE){::close(idleFd_);idleFd_ ::accept(acceptSocket_.fd(), NULL, NULL);::close(idleFd_);idleFd_ ::open(/dev/null, O_RDONLY | O_CLOEXEC);}} }
http://www.dnsts.com.cn/news/98585.html

相关文章:

  • 濮阳市建设分局网站怎么开外贸网店
  • VPS如何做网站服务器网站建设文件名
  • 复杂大型网站建设成本平面设计免费软件
  • py网站开发国内优秀网页网站
  • 营销网站创建wordpress 3.9 上传
  • 学ps有用还是网页制作福州seo网站管理
  • 酷炫flash网站wordpress js代码插件
  • 网站建设常识网页游戏平台系统
  • 做电影网站危险吗中国建设教育协会网站
  • wordpress如何页面静态杭州网络排名优化
  • 网站建设规划设计公司织梦网站如何做301跳转
  • 网站设计作业建立网站的连接结构有哪几种形式
  • 正在建设中网站朝阳区seo技术
  • 医疗网站建设目录网站图片命名规范
  • 纸业公司网站模板源文件励志做的很好的网站
  • 做网站需要什么按钮重庆忠县网站建设公司推荐
  • 电脑打开做的网站总显示404网站页面相似度检测
  • 阜宁做网站工作室徐州教育平台网站建设
  • 怀化网站网站建设相机网站建设策划书
  • pt网站怎么下载与做扁平式网站
  • 唐山有制作网站的没怎么注册网上店铺
  • 网站制作流程有哪些步骤?网站建设的公司哪家是上市公司
  • 医院营销型网站建设政务公开做的好的网站有哪些
  • 网站建设南通wordpress常用主题
  • 五百亿网站建设注册监理工程师
  • 做信息网站需要什么建设工程造价信息网站
  • 网站托管西安asp网站漏洞修复插件
  • php网站怎么做302wordpress 去掉标题
  • 网站内容方向泰州网站制作企业
  • 温州快速网站建设排名公众号平台文章wordpress