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

社交网站cms医院网站建设原理

社交网站cms,医院网站建设原理,国家最新房地产政策,wordpress社交创建一个epoll句柄#xff0c;参数size用来告诉内核监听的文件描述符的个数#xff0c;跟内存大小有关。 #include sys/epoll.h int epoll_create(int size)   size#xff1a;监听数目 通过创建一个size大小的红黑数来实现epoll句柄#xff0c;返回epfd是该… 创建一个epoll句柄参数size用来告诉内核监听的文件描述符的个数跟内存大小有关。   #include sys/epoll.h   int epoll_create(int size)   size监听数目     通过创建一个size大小的红黑数来实现epoll句柄返回epfd是该树的根节点。   控制某个epoll监控的文件描述符上的事件注册、修改、删除。     #include sys/epoll.h     int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)     epfd 为epoll_creat的句柄     op 表示动作用3个宏来表示       EPOLL_CTL_ADD (注册新的fd到epfd)       EPOLL_CTL_MOD (修改已经注册的fd的监听事件)       EPOLL_CTL_DEL (从epfd删除一个fd)     event 告诉内核需要监听的事件是一个地址   struct epoll_event {     __uint32_t events;      //EPOLLIN  EPOLLOUT  EPOLLERR     epoll_data_t data;    };   typedef union epoll_data {     void *ptr;     int fd;            //相当于函数中使用的fd     uint32_t u32;     uint64_t u64;   } epoll_data_t;   等待所监控文件描述符上有事件的产生类似于select()调用。   #include sys/epoll.h   int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)   events 用来存内核得到事件的集合是一个数组并且是传出参数。   maxevents 告之内核这个events有多大这个maxevents的值不能大于创建epoll_create()时的size   timeout 是超时时间     -1 阻塞     0 立即返回非阻塞     0 指定毫秒   返回值 成功返回有多少文件描述符就绪时间到时返回0出错返回-1   示例 #include stdio.h #include unistd.h #include stdlib.h #include string.h #include arpa/inet.h #include sys/epoll.h #include errno.h #include ctype.h#include wrap.h#define MAXLINE 8192 #define SERV_PORT 8000 #define OPEN_MAX 5000int main(int argc, char *argv[]) {int i, listenfd, connfd, sockfd;int n, num 0;ssize_t nready, efd, res;char buf[MAXLINE], str[INET_ADDRSTRLEN];socklen_t clilen;struct sockaddr_in cliaddr, servaddr;struct epoll_event tep, ep[OPEN_MAX]; //tep: epoll_ctl参数 ep[] : epoll_wait参数 listenfd Socket(AF_INET, SOCK_STREAM, 0);int opt 1;setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, opt, sizeof(opt)); //端口复用 bzero(servaddr, sizeof(servaddr));servaddr.sin_family AF_INET;servaddr.sin_addr.s_addr htonl(INADDR_ANY);servaddr.sin_port htons(SERV_PORT);Bind(listenfd, (struct sockaddr *) servaddr, sizeof(servaddr));Listen(listenfd, 20);efd epoll_create(OPEN_MAX); //创建epoll模型, efd指向红黑树根节点if (efd -1)perr_exit(epoll_create error);tep.events EPOLLIN; tep.data.fd listenfd; //指定lfd的监听时间为读res epoll_ctl(efd, EPOLL_CTL_ADD, listenfd, tep); //将lfd及对应的结构体设置到树上,efd可找到该树if (res -1)perr_exit(epoll_ctl error);for ( ; ; ) {/*epoll为server阻塞监听事件, ep为struct epoll_event类型数组, OPEN_MAX为数组容量, -1表永久阻塞*/nready epoll_wait(efd, ep, OPEN_MAX, -1); if (nready -1)perr_exit(epoll_wait error);for (i 0; i nready; i) {if (!(ep[i].events EPOLLIN)) //如果不是读事件, 继续循环continue;if (ep[i].data.fd listenfd) { //判断满足事件的fd是不是lfd clilen sizeof(cliaddr);connfd Accept(listenfd, (struct sockaddr *)cliaddr, clilen); //接受链接 printf(received from %s at PORT %d\n, inet_ntop(AF_INET, cliaddr.sin_addr, str, sizeof(str)), ntohs(cliaddr.sin_port));printf(cfd %d---client %d\n, connfd, num);tep.events EPOLLIN; tep.data.fd connfd;res epoll_ctl(efd, EPOLL_CTL_ADD, connfd, tep);if (res -1)perr_exit(epoll_ctl error);} else { //不是lfd, sockfd ep[i].data.fd;n Read(sockfd, buf, MAXLINE);if (n 0) { //读到0,说明客户端关闭链接res epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, NULL); //将该文件描述符从红黑树摘除if (res -1)perr_exit(epoll_ctl error);Close(sockfd); //关闭与该客户端的链接printf(client[%d] closed connection\n, sockfd);} else if (n 0) { //出错perror(read n 0 error: );res epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, NULL);Close(sockfd);} else { //实际读到了字节数for (i 0; i n; i)buf[i] toupper(buf[i]); //转大写,写回给客户端 Write(STDOUT_FILENO, buf, n);Writen(sockfd, buf, n);}}}}Close(listenfd);Close(efd);return 0; }   转载于:https://www.cnblogs.com/lr1402585172/p/10754937.html
http://www.ihoyoo.com/news/99297.html

相关文章:

  • 苏州淘宝网站建设外贸网站建设方法
  • 网站建设手机端装修公司加盟平台
  • 做网站策划计划书荆州网站制作公司
  • 万维网网站301重定向怎么做wordpress coreseek
  • 无为做网站数据库检索网站建设
  • 怎样做 网站的快捷链接嘉兴做网站的哪家好
  • 宁波城乡住房建设局网站怎么开发小程序
  • 汕头网站关键词优化教程网站开发折旧
  • 手机网站设计制作凤翔网站开发
  • 建设教育网站的目的企业产品微网站收费吗
  • 门户网站内容维护流程店铺设计餐饮
  • 如何部置网站到iis线上免费推广平台都有哪些
  • 如何用织梦做网站如何优化网络速度
  • 唐山网站建设怎么做招标公司网站
  • 网站系统性能定义库尔勒网站建设价格
  • 怎么修改网站模板网络销售好不好做
  • 青岛网站建设公司正网站的标题
  • 网站栏目页怎么做手机qq钓鱼网站怎么做
  • 网站开发项目挣钱吗做公司 网站建设价格低
  • 织梦网站栏目是做什么用的推广引流的方法
  • 做网站哪便宜wordpress技巧
  • 英文网站建设价格怎么叫人做网站
  • 做网站去哪里好海口网站运营托管咨询
  • 哪些网站做翻译可以赚钱分销平台都有哪些
  • node.js做网站开发如何用ip做网站
  • swoole怎么做直播网站wordpress如何建立网站
  • 做网站活动什么是网站及其制作步骤
  • 给男票做网站表白的软件网站定制怎么收费
  • 网站设计的背景企业门户网站建站
  • 为企业规划一个网站创意营销