zoukankan      html  css  js  c++  java
  • 读Linux高性能服务器编程-12章http服务器源码

    title:用线程池实现的http服务器

    从main函数看起

    1. 解析ip地址(点分制, 端口号)
    2. 设置忽略SIGPIPE信号
    3. 初始化线程池,池中创建了8个线程,每个线程对应一个work函数
    4. 初始化http逻辑任务处理对象(65535个,为什么需要分配这么多????)
    5. 初始化socket

          socket函数原型 int socket(int af, int type, int protocol);

           af    AF_INET或者AF_INET6,分别表示IPv4地址或者IPv6地址,或者可以为PF_INET(与AF_INET区别是理论上建立socket时是指定协议,应该用PF_INET,设置地址时应该用AF_INET)

           type 为数据传输方式/套接字类型,常用的有 SOCK_STREAM(流格式套接字/面向连接的套接字) 和 SOCK_DGRAM(数据报套接字/无连接的套接字)

             protocol 表示传输协议,常用的有 IPPROTO_TCP 和 IPPTOTO_UDP,分别表示 TCP 传输协议和 UDP 传输协议。

             setsockopt函数原型 int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); manipulate options for the socket referred to by the file descriptor sockfd(手动设置socket指定文件描述符                         选项)

            sockfd  socket文件描述符

            level    指定网络协议protocol number,比如TCP协议对应的是SOL_SOCKET

            optname  SO_LINGER 在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回.

            optval 根据optname传递参数

            oplen sizeof(optval)

          inet_pton man inet_pton

                       hton man hton

             bind man bind

          listen man listen

      6. epoll初始化

        创建epoll实例 

        epoll_create(int size)

          size之前用于表示要监视的文件描述符个数,现在只需要大于0即可,因为内核可以动态获取数据结构的大小

        控制epoll

        epoll_ctrl(int epfd, int op, int fd, struct epoll_event *event);

          epoll_ctl( epollfd, EPOLL_CTL_ADD, fd, &event ); // EPOLL_CTL_ADD把fd所指向的socket描述符添加到epollfd指定的epoll监听实例集中.
       7.  等待epoll实例关联的文件描述符上的事件
        epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
          timeout -1表示调用将一直等待到有事件发生才能返回(阻塞 block indefinitely)
  • 相关阅读:
    el-select remote 远程搜索 多个共享一个options,options改变时输入框值不显示名称的问题
    vue 中数据共享的方式
    关于AI本质的思考
    人工智能——一场精妙的商业炒作
    相关下载链接
    只用两个问题通关《极限挑战皇家宝藏》最后一关
    常见图片格式详解
    改写《python基础教程》中的一个例子
    介绍四款windows下的神器
    实现windows批处理下的计时功能
  • 原文地址:https://www.cnblogs.com/xl-cnblog/p/13097787.html
Copyright © 2011-2022 走看看