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

dedecms购物网站南阳网站建设优化

dedecms购物网站,南阳网站建设优化,wordpress多用户博客系统,seo项目经理文章目录 概述摘要正文:介绍ET模式#xff08;边缘触发#xff09;LT模式#xff08;水平触发 默认#xff09; 总结 概述 当谈到Linux网络编程中的ET#xff08;边缘触发#xff09;模式和LT#xff08;水平触发#xff09;模式时#xff0c;我们需要理解它们在事件… 文章目录 概述摘要正文:介绍ET模式边缘触发LT模式水平触发 默认 总结 概述 当谈到Linux网络编程中的ET边缘触发模式和LT水平触发模式时我们需要理解它们在事件驱动编程中的作用和区别。下面是一篇详细解释这两种模式的博文包含代码示例。 摘要 摘要: 在Linux网络编程中ET边缘触发模式和LT水平触发模式是两种常用的事件触发方式。本文将详细介绍这两种模式的原理和使用场景并提供相应的代码示例帮助读者更好地理解和应用。 正文: 介绍 在事件驱动编程中事件触发方式决定了何时和如何通知应用程序发生的事件。ET模式和LT模式是两种常见的事件触发方式主要用于处理非阻塞I/O操作。 EPOLL事件有两种模型 Edge Triggered (ET) 边缘触发只有数据到来才触发不管缓存区中是否还有数据。 Level Triggered (LT) 水平触发只要有数据都会触发。 ET模式边缘触发 ET(edge-triggered)ET是高速工作方式只支持no-block socket。在这种模式下当描述符从未就绪变为就绪时内核通过epoll告诉你。然后它会假设你知道文件描述符已经就绪并且不会再为那个文件描述符发送更多的就绪通知。请注意如果一直不对这个fd作IO操作(从而导致它再次变成未就绪)内核不会发送更多的通知(only once). 下面是一个使用ET模式的示例代码片段该代码使用epoll监听套接字并读取数据 /* server.c */ #include stdio.h #include string.h #include netinet/in.h #include arpa/inet.h #include sys/wait.h #include sys/types.h #include sys/epoll.h #include unistd.h #include fcntl.h#define MAXLINE 10 #define SERV_PORT 8080int main(void) {struct sockaddr_in servaddr, cliaddr;socklen_t cliaddr_len;int listenfd, connfd;char buf[MAXLINE];char str[INET_ADDRSTRLEN];int i, efd, flag;listenfd socket(AF_INET, SOCK_STREAM, 0);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);struct epoll_event event;struct epoll_event resevent[10];int res, len;efd epoll_create(10);/* event.events EPOLLIN; */event.events EPOLLIN | EPOLLET; /* ET 边沿触发 默认是水平触发 */printf(Accepting connections ...\n);cliaddr_len sizeof(cliaddr);connfd accept(listenfd, (struct sockaddr *)cliaddr, cliaddr_len);printf(received from %s at PORT %d\n,inet_ntop(AF_INET, cliaddr.sin_addr, str, sizeof(str)),ntohs(cliaddr.sin_port));flag fcntl(connfd, F_GETFL);//将其转化为no-blockflag | O_NONBLOCK;fcntl(connfd, F_SETFL, flag);event.data.fd connfd;epoll_ctl(efd, EPOLL_CTL_ADD, connfd, event);while (1) {printf(epoll_wait begin\n);res epoll_wait(efd, resevent, 10, -1);printf(epoll_wait end res %d\n, res);if (resevent[0].data.fd connfd) {while ((len read(connfd, buf, MAXLINE/2)) 0)write(STDOUT_FILENO, buf, len);}}return 0; } LT模式水平触发 默认 LT模式在事件发生时会一直通知直到应用程序将事件处理完毕。它不要求应用程序一直读取或写入数据可以在每个事件通知中只处理一部分数据。LT模式适用于需要按需处理数据的场景如批量数据处理、文件传输等。 下面是一个使用LT模式的示例代码片段该代码使用epoll监听套接字并读取数据 // 创建epoll实例 int epollfd epoll_create1(0);// 添加监听套接字到epoll实例 struct epoll_event ev; ev.events EPOLLIN; // LT模式 ev.data.fd sockfd; epoll_ctl(epollfd, EPOLL_CTL_ADD, sockfd, ev);// 循环监听事件并处理 while (1) {struct epoll_event events[MAX_EVENTS];int ready epoll_wait(epollfd, events, MAX_EVENTS, -1);for (int i 0; i ready; i) {if (events[i].events EPOLLIN) {// 读取数据char buffer[READ_SIZE];int bytesRead read(events[i].data.fd, buffer, READ_SIZE);// 处理数据// ...}} }总结 ET模式和LT模式是Linux网络编程中常用的事件触发方式。ET模式要求应用程序在读取或写入数据时必须一直进行操作适用于需要及时处理全部数据的场景。LT模式允许应用程序按需处理数据适用于需要按需处理数据的场景。理解并正确应用这两种模式对于开发高效、可靠的网络应用程序至关重要。 通过以上详细的解释和代码示例我们希望读者能够更好地理解ET模式和LT模式在Linux网络编程中的作用和区别。这两种模式的选择取决于具体的应用需求开发者可以根据实际情况来决定使用哪种模式。 希望本文对您有所帮助如果还有任何问题请随时提问
http://www.w-s-a.com/news/244802/

相关文章:

  • 大家称赞的网站建设常德小学报名网站
  • 做网站怎么建文件夹百度网盘搜索神器
  • 企业有域名怎么做网站淘宝推广平台
  • 学网站开发去哪学药品销售推广方案
  • 哔哩哔哩h5播放器深圳网站seo外包公司哪家好
  • asp做的手机网站wordpress 文章title
  • 网站验证码目录wordpress内嵌播放器
  • 文明网网站建设南昌市建设规费标准网站
  • 安康有建网站的公司吗做网站用什么网名好
  • 济南网站制作哪家专业西安市城乡建设网官方网站
  • 网站建设有趣小游戏怎样让网站优化的方式
  • 昭通做网站儿童编程教学入门教程
  • eclipse静态网站开发软文广告投放平台
  • 网站建设教学视频济南做网站需要多少钱
  • 网站免费做软件市工商联官方网站建设方案
  • 网站建设大体包含英铭长沙网站建设
  • 网站建设培训学校北京如何搜索网站
  • discuz论坛模板哪些网站容易做seo优化
  • 渭南公司做网站网站建设互联网推广
  • 公司网站app怎么做杭州建设局网站
  • 网站开发需要自己写代码吗12306网站多少钱做的
  • 策勒网站建设四川建设网有限责任公司招聘
  • 网站建设哪里有学网页界面设计论文
  • 怎么做外贸网站推广劳务公司网站怎么做
  • 滴答手表网站中铁建设集团有限公司招聘信息2021
  • 重庆富通科技有限公司网站新闻头条最新消息国家大事
  • 四字母net做网站怎么样企业代运营公司
  • 纪检网站建设方案wordpress首页静态页面
  • 网站右下角浮动效果如何做网站logo设计在线生成
  • 西宁哪里做网站婚纱摄影网站设计思路