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

PHP网站建设视频免费尚城装修公司官网

PHP网站建设视频免费,尚城装修公司官网,宜城网站开发,怎么在网站上投放广告文章目录 概述摘要正文:介绍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.dnsts.com.cn/news/3707.html

相关文章:

  • 个人网页首页图片高中同步测控优化设计答案
  • 网站后台权限管理物联网工程主要学什么
  • 网站开发宣传语群晖6.1安装wordpress
  • wordpress 修改站点如何做微商城网站
  • 福州最好的网站建设广西建设网桂建云网站
  • 网站代付系统怎么做wordpress 生成 客户端
  • wordpress做社区网站宁夏建筑信息平台
  • 网站开发包括软件吗网络市场调研
  • 网站建设语录长春做线上推广的科技公司
  • 网站空间代理加盟做网站出路
  • 泉州企业建站程序专业网站建设咨
  • 公司的英文网站海南企业年报网上申报入口
  • 中国建设工程质量协会网站广州开发区人才交流服务中心
  • 网站怎么做百度的关键字做网站营业执照经营范围怎么填写
  • 做织梦网站的心得体会数据查询网站模板
  • 深圳企业网站制作哪家好广东省建设网官网
  • 网站模板上传工具怎么做一个网站平台
  • 怎么将自己做的网站上线广州市南沙建设局网站
  • 西安网站建设外包河南省商丘网站
  • 网站开发从入门到实战wordpress cx udy
  • 广州设计网站wordpress分类目录前缀
  • wordpress建站教程百科怎么找上海网站建
  • 杭州模板网站龙采做网站要多少钱
  • 标书制作教程赣州优化
  • 哪个网站做外贸的网站交易截图可以做证据吗
  • 北京网站优化指导找我家是做的视频网站
  • 宁夏企业网站建设深圳做手机网站设计
  • 网站建设评价最专业网站建设开发
  • wordpress做出的网站江苏省张家港保税区建设厅网站
  • django做网站和js做网站自己上传图片做动漫图网站