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

个人网站的设计太原网站推广公司

个人网站的设计,太原网站推广公司,wordpress收录,营销网站开发这里写目录标题 epoll介绍操作函数epoll_create()epoll_ctl()epoll_wait() 操作步骤 epoll介绍 epoll底层模型是一个红黑树,红黑树的每一个节点(每一个节点代表一个文件描述符)都对应一组事件(events),当某…

这里写目录标题

  • epoll介绍
  • 操作函数
    • epoll_create()
    • epoll_ctl()
    • epoll_wait()
  • 操作步骤

epoll介绍

epoll底层模型是一个红黑树,红黑树的每一个节点(每一个节点代表一个文件描述符)都对应一组事件(events),当某个文件描述符就绪了,就会触发相关的事件,每出发一个事件,就会有一个相关的处理函数被调用。

操作函数

#include<sys/epoll.h>
//创建epoll实例,通过一棵红黑树管理待检测集合
int epoll_create(int size);
//管理红黑树上的文件描述符(添加,修改,删除)
int epoll_ctl(int epfd, int op , int fd , struct epoll_event * event);
//检测 epoll 树中是否有就绪的文件描述符
int epoll_wait ( int epfd , struct epoll_event * events , int maxevents , int timeout );

epoll_create()

会创建一个epoll的实例,(也就是红黑树)
返回值:epoll 实例的 文件描述符,通过这个文件描述符来操作红黑树。

epoll_ctl()

int epoll_ctl(int epfd, int op , int fd , struct epoll_event * event);
int epfd : epoll 实例的文件描述符。
int op:
EPOLL_CTL_ADD : 在红黑树中添加文件描述符,并且指定检测的事件。
EPOLL_CTL_MOD : 修改已经添加到树节点的文件描述符的事件。
EPOLL_CTL_DEL : 删除已经添加到epoll树中的文件描述符

  typedef   union   epoll_data{void  *ptr;int     fd;uint32_t   u32;uint64_t   u64;} epoll_data_t;struct   epoll_event {uint32_t   events;          //事件epoll_data_t   data;}

events 的取值,对应各种事件。
EPOLLIN : 检测文件描述符的读事件,也就是检测这个文件描述符的读缓冲区中是否还有数据。
EPOLLOUT : 检测文件描述符的写事件,也就是检测写缓冲区是否可写。
EPOLLERR
EPOLLET 水平出发模式,边沿触发模式。

返回值:成功返回0,失败返回 -1 。

epoll_wait()

int epoll_wait (int epfd , struct spoll_event *events , int maxevents , int timeout);
检测添加到树上所有的节点是不是已经处于就绪状态;
如果有处于就绪状态的文件描述符,这个状态就会返回。
告诉我们有哪些文件描述符是就绪的。

如果树上没有就绪的文件描述符,这个就会一直阻塞,一直检测。
struct spoll_event *events : 传出参数,

操作步骤

1,创建监听的套接字
int  lfd = socket(AF_INET,SOCK_STREAM);
2,设置端口复用(可选)
int   opt = 1;
setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
3,使用本地的 ip 与端口和监听的套接字进行绑定
int   ret  =  bind(lfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
4,给监听的套接字设置监听
listen(lfd,128);
5,创建epoll实例对象
// An highlighted block
int  epfd = epoll_create(100);
6,将用于监听的套接字添加到epoll实例中
// An highlighted block
struct  epoll_event  ev;
ev.events = EPOLLIN;
ev.data.fd = lfd;
int ret = epoll_ctl(epfd,EPOLL_CTL_ADD,lfd,&ev);
7,检测添加到epoll实例中的文件描述符是否已经就绪并且将这些已就绪的文件描述符进行处理int  num = epoll_wait(epfd,evs,size,-1);如果是监听的文件描述符,和新客户端连接,将此文件描述符加入epoll树中int  cfd = accept(curfd,NULL,NULL);ev.events = EPOLLIN;ev.data.fd = cfd;epoll_ctl(epfd,EPOLL_CTL_ADD,cfd,&ev);如果是通信的文件描述符,和对应客户端通信
http://www.dtcms.com/wzjs/481392.html

相关文章:

  • 网站 管理关键词网站
  • 比较厉害的网站制作公司重庆seo整站优化外包服务
  • 公司法人查询系统seo网站排名全选
  • 中国风网站怎么配色如何自己做一个网页
  • 登陆江西建设厅三类人员的网站广东网络推广运营
  • 网站怎么免费做推广方案今日国际新闻事件
  • 如何做整人网站seo是什么岗位
  • 网站建设百度文库百度官网app
  • 合肥哪里有做网站的百度应用商店下载
  • 建设网站的费用明细百度关键词排名推广工具
  • 手机网站制作服务机构广告代运营公司
  • 网站制作深圳网站有哪些平台
  • 铁门关网站建设网站运营工作的基本内容
  • 做时尚网站的目的网站免费发布与推广
  • 做ic的电子网站有哪些品牌设计公司排名前十强
  • 南京价格网站建设网站域名怎么查询
  • 新疆建设工程信息网关闭通知seo网站优化推广费用
  • 接网站开发项目平台seo网站优化软件
  • 新手做网站免费域名搜索引擎优化的作用
  • 做网站需要用服务器吗为企业策划一次网络营销活动
  • 专业做美食视频的网站网络营销策略内容
  • 知识产权网站模板黄页网
  • 镇江论坛百度seo通科
  • 网站规划与网站建设网络广告营销典型案例
  • 网站建设柒首先金手指8百度推广运营怎么做
  • 单页网站seo怎么做网站搜索
  • 微信网站开发 新闻学seo哪个培训好
  • 网站开发建设价格免费关键词挖掘工具
  • 最新任免名单最新网站seo链接购买
  • 高端品牌网站开发郑州网站推广公司咨询