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

深圳有哪些做网站的公司好自助建站系统软件

深圳有哪些做网站的公司好,自助建站系统软件,女女男做 网站,云南网站建设的步骤一、Reactor 网络编程模型 reactor 是一个事件处理模型。网络处理:因为用户层并不知道 IO 什么时候就绪,所以将对 IO 的处理转化为对事件的处理。网络模型构成: 非阻塞 IO:操作 IO,如果 IO 未就绪,IO 函数会立刻返回。IO 多路复用:检测多路 IO 是否就绪。工作流程: 注册…

一、Reactor 网络编程模型

  • reactor 是一个事件处理模型。
  • 网络处理:因为用户层并不知道 IO 什么时候就绪,所以将对 IO 的处理转化为对事件的处理
  • 网络模型构成:
    • 非阻塞 IO操作 IO,如果 IO 未就绪,IO 函数会立刻返回
    • IO 多路复用:检测多路 IO 是否就绪
  • 工作流程:
    • 注册事件:
      • acceptlistenfd 注册读事件,如果读事件被触发了,说明 IO 就绪了,有新的客户端跟我们建立连接,那么处理事件的时候就可以直接调用 accept()
      • connect:服务器作为客户端去连接 MySQLconnectfd 注册写事件,如果写事件被触发了,说明连接建立成功了。
      • readclientfd 注册读事件,如果读事件被触发了,说明读缓冲区中有数据了(客户端发送数据了),我们再调用 read() 去读缓冲区中读数据。accept 返回 clientfd
      • writeclientfd 注册写事件,如果写事件被触发了,说明写缓冲区中有空间可以写数据,我们再调用 write() 往写缓冲区中写数据。
      • 被动断开连接:clientfd 注册读 / 写事件read = 0 可以判断连接已经断开了,write = -1 && errno = EPIPE 也可以判断连接已经断开了。
    • 处理事件:事件触发后,说明 IO 就绪了,处理相对应的 IO
  • 封装流程:
    • 事件对象:http_conn 连接、listenfd、不同事件的回调函数。
    • 事件控制接口:注册事件接口、注销事件接口。
    • 事件循环:不断检测并发就绪的事件。

二、Reactor 和 Proactor 的区别

  • 本质区别:IO 操作不同,reactor 中先检测 IO 是否就绪,然后再操作 IO;proactor 只需要投递请求,所有 IO 操作由内核完成
  • reactor 是同步 IO 网络模型
    • 具体 IO 操作通过非阻塞 IO 来完成。
    • 具体 IO 是否就绪,由 IO 多路复用来完成。
  • proactor 是异步 IO 网络模型
    • 具体 IO 检测和 IO 操作都由内核完成
  • 同步 IO异步 IO 的区别:
    • 同步 IOIO 函数调用后,立刻能获知 IO 操作的结果在这里插入图片描述
    • 异步 IO异步 IO 函数调用后,不能获知 IO 操作的结果,此时 IO 操作都由内核完成
  • 阻塞 IO非阻塞 IO 的区别:
    • IO 未就绪时,IO 函数是否立刻返回:立刻返回是非阻塞 IO;阻塞等待是阻塞 IO
    • IO 函数的第一个参数,也就是具体的 fd 来决定,默认情况下,fd 是阻塞的,可修改为非阻塞。
  • IOCP
    • CreateIoCompletionPort:创建一个完成端口。
    • 创建 socketbindlisten,将该 socket 绑定到完成端口上。
    • 根据 CPU 核心数创建工作线程,将完成端口传递到工作线程。
      • 工作线程调用 GetQueuedCompletionStatus 等待 IO 完成。
      • 处理业务逻辑(界定数据包)。
    • 投递 IO 请求 AcceptExRecvExSendEx 到完成端口上。

三、连接断开有几种判定方式

  • 服务器主动断开:主动调用 close()
  • 服务器被动断开:
    • 客户端主动调用
      • close():关闭读端和写端。
      • shutdown():关闭读端或写端,或都关闭。
    • 客户端直接退出。
  • IO 网络模型:
    • read = 0:读端关闭。(recv 第四个参数为 0 的时候和 read 等价)
    • write = -1 && errno = EPIPE:写端关闭。

在这里插入图片描述

  • IO 多路复用模型:
    • EPOLLRDHUP:读端关闭。
    • EPOLLHUP:读写端都关闭。
  • reactor 网络模型:
    • 非阻塞 IO 可以用 IO 网络模型来判断连接是否断开。
    • 也可以通过 IO 多路复用模型来判断连接是否断开。
  • proactor 网络模型:

四、接收客户端连接有几种方式

  • 前提:服务端已经创建了 socket,且该 socket 绑定在某个地址上(bind),且该 socket 已经监听(listen)。
  • 阻塞的 IO 网络模型:
    • 获知连接的唯一文件描述符。
    • 获知连接的 IP 地址。
    • 以阻塞线程的方式实现接收连接。
    int clientfd = accept(socket, &addr, sizeof(addr));
    
  • 非阻塞的 IO 网络模型:
    • 如果接收到,就跟阻塞的 IO 表现一样。
    • 如果没有接收到,clientfd = -1errnoEWOULDBLOCK
    • 尝试一次接收连接。
    int clientfd = accept(socket, &addr, sizeof(addr));
    
  • reactor 网络模型:
    • 需要把 listenfd 注册它的读事件。
    • 如果在事件循环中检测到 listenfd 的读事件,说明连接建立的 IO 已经就绪。
    • 此时调用非阻塞 IO accept 函数,将得到连接的 clientfdIP 地址。
    • 把接收连接抽象成一个事件。
  • proactor 网络模型:
    • 投递 accept 请求:调用 AcceptEx 函数,传递一个重叠结构。
    • 在工作线程中调用 GetQueueCompletionStatus 获取 IO 完成的结果。
    • 如果有 IO 完成的事件,通过上面的函数可以获取重叠结构,从而知道具体是什么请求。
    • proactor 是异步 IO 处理ÿ
http://www.hengruixuexiao.com/news/6706.html

相关文章:

  • 巴中建设厅网站电话谷歌排名优化入门教程
  • 兴安盟住房和城乡建设部网站郑志平爱站网创始人
  • 用返利网站做爆款站长工具介绍
  • 永嘉网站建设几3分钟搞定网站seo优化外链建设
  • 做装修效果图的网站在线咨询 1 网站宣传
  • 做网站客户端企业营销型网站策划
  • 公安机关网站规范化建设应用亚马逊跨境电商开店流程及费用
  • 牛商网做的网站seo关键词排名技巧
  • 网站刷链接怎么做的开发新客户的十大渠道
  • 沈阳网站建设西安疫情最新数据消息中高风险地区
  • 怎么代码放到网站上北京网站seo服务
  • 政府网站制作建设网站推广优化
  • 网站bp怎么做某网站seo策划方案
  • 嘉兴网站建设电话深圳做seo有哪些公司
  • 有哪些可以做图的网站啊爱站工具网
  • 官方网站娱乐游戏城百度指数分析数据
  • 开网站备案流程风云榜
  • 做网站需要什么知识企业管理培训
  • 莱芜做网站的商家有哪些毕节地seo
  • 招聘网站套餐短视频seo系统
  • 陕西网站开发哪家好火星时代教育培训机构学费多少
  • 成都疫情最新通知西安seo教程
  • 恶意 镜像网站网络营销的六大功能
  • 西安市十大it培训机构上海aso苹果关键词优化
  • 六安做网站公司绍兴百度推广优化排名
  • 高端网站建设公司宁波谷歌seo推广公司
  • 纺织品公司网站建设网站正能量免费推广软件
  • vs 网站项目网络营销师
  • 温州快速建站公司b站网页入口
  • 怎样做网站发布信息山东建站管理系统