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

导购网站怎么做有特色不孕不育网站建设总结

导购网站怎么做有特色,不孕不育网站建设总结,百度广告多少钱,wordpress 文章id更改本文是我的学习笔记#xff0c;学习路线跟随Github开源项目#xff0c;链接地址#xff1a;30dayMakeCppServer 文章目录 select模型fd_set结构体 timeval结构体文件描述符的就绪条件带外数据与普通数据socket的状态 select模型 select是Linux下的一个IO复用模型#xff…本文是我的学习笔记学习路线跟随Github开源项目链接地址30dayMakeCppServer 文章目录 select模型fd_set结构体 timeval结构体文件描述符的就绪条件带外数据与普通数据socket的状态 select模型 select是Linux下的一个IO复用模型同时它也是Linux中一个系统函数的名称 #include sys/select.hint select(int ndfs, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);select系统函数的用途是 在一段指定时间内监听用户感兴趣的文件描述符上的可读、可写和异常等事件 我们先对这个函数的各个参数进行一个解释 ndfs指定被监听的文件描述符的总数resdfds、writefds、exceptfds分别指向可读、可写和异常事件所对应的文件描述符timeout设置时间若是NULL将会一直阻塞知道某个文件描述符就绪 select成功时返回[[#文件描述符的就绪状态|就绪可读、可写和异常文件描述符]]的总数。如果在超时时间内没有任何文件描述符就绪select将返回0。 select失败时返回-1并设置errno。 如果在程序等待期间程序收到信号例如CtrlC这种可由函数kill发起这点在Linux系统编程中有说到则select会立即返回-1并设置errno为EINTER这是在errno.h中定义的一个错误代码意思是“Interrupted system call”即系统调用被中断 fd_set结构体 fd_set结构体的实质其实是一个存放文件描述符状态的数组它的定义类似于以下结构 typedef struct {long fds_bits[FD_SETSIZE / (8 * sizeof(long))]; } fd_set;这个数组的长度由FD_SETSIZE决定。现在我们对这个数组进行一个更详细的解释。 这里给出fd_set的完整定义 #include typesizes.h /*文件描述符的最大数量 */ #define __FD_SETSIZE 1024 #include sys/select.h // 这个好像没啥用 #define FD_SETSIZE__FDFDSETSIZE /*给long int取个别名叫__fd_mask这个类型的占用未4或8字节具体看编译器和架构 */ typedef long int __fd_mask; // 取消宏定义可能是为了防止宏定义冲突 #undef __NFDBITS /*重新设定__NFDBITS————NFDBITS计算的是__fd_maks所占的位数 */ #define __NFDBITS (8*(int)sizeof(__fd_mask)) typedef struct{#ifdef __USE_XOPEN__fd_mask fds_bits[__FD_SETSIZE/__NFDBITS]#define __FDS_BITS(set((set)-fds_bits))#else__fd_mask fd_bits[__FD_SETSIZE/__NFDBITS];#define __FDS_BITS(set)((set)-__fds_bits)#endif }fd_set从上面这段代码可以知道fd_set数组所占用的bit的数量其实就是__FD_SETSIZE/8。 这是因为fd_set的本质是位图即它不直接存储文件描述符而是根据其中每一位的存储情况来确定某一文件描述符的状态。 具体如下 位图的索引数组的下标对应文件描述符的编号即第0位对应文件描述符0第1位对应文件描述符1以此类推位图的值表示对应的文件描述符的状态。如果位值位1表示该文件描述符需要监视若是0则表示该文件描述符不需要监视 由于fd_set中的操作本质上是位操作我们想要进行操作会十分的复杂因此我们应当使用其提供的一系列宏来访问fd_set中的位 #include sys/select.h /*清除fdset中的所有位 */ FD_ZERO(fd_set* fdset); /*设置fd_set中的位fd */ FD_ZERO(int fd, fd_set* fdset); /*清除fdset中的位fd */ FD_CLR(int fd, fd_set* fdset); /*测试fdset的位fd是否被设置 */ int FD_ISSET(int fd, fd_set* fdset);timeval结构体 在上面的select系统函数中最后一个参数就是一个timeval结构体指针它用于设置select的超时时间 struct timeval{long tv_sec; // 秒数long tv_usec;// 微秒数 };从其定义我们可以看出它提供了微秒级的定时方式若是我们将其设置为0即监听时间为0这会使得select立即返回。 至于为什么需要使用指针呢这点应该很好理解就是为了避免拷贝需要将该参数提交给内核内核会将其修改以告诉应用程序select等待了多久。 但是在游双的《Linux高性能服务器编程》中写道 不过我们不能完全信任select调用返回后的timeout值比如调用失败时timeout值是不确定的。 文件描述符的就绪条件 此节摘抄与游双的《Linux高性能服务器编程》第九章具体为9.1.2。 在网络编程中下列情况的socket可读 socket内核接收缓存区中的字节数大于或等于其低水位标记SO_RCVLOWAT。此时我们可以无阻塞地读取该socket并且读操作返回地字节数大于0socket通信地对方关闭连接。此时对该socket读操作将返回0监听socket上有新的连接请求socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误 下列情况下socket可写 socket内核发送缓存区中的可用字节数大于或等于其低水位标记SO_SNDLOWAT。此时我们可以无阻塞地写该socket并且写操作返回的字节数大于0socket的写操作被关闭。对写操作被关闭的socket执行写操作将触发一个SIGPIPE信号wocket使用非阻塞的connect连接成功或者失败超时之后socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误 在网络程序中select能处理的异常情况只有一种socket上接收到[[#带外数据与普通数据|带外数据]]。 带外数据与普通数据 普通数据Normal Data是指正常的、按照通常顺序传输的数据是正常状态。当进行网络通信时普通数据是按照先进先出的原则进行传输的。发送方将数据逐个字节地发送给接收方并确保接收方按照相同的顺序接收和重新组装数据。 带外数据Out-of-Band Data指的是具有高优先级的数据被划分为与普通数据分开的数据通道它也被称为”紧急数据“是一种异常状态。带外数据可以在数据流中插入即使在普通数据还未发送完毕的情况下带外数据也可以及时传输并被接收方处理。带外数据的传输方式通常比普通数据的传输优先级更高。 带外数据通常用于发送一些紧急的控制信息或异常情况的通知例如中断信号或连接关闭请求等。它们被用于提供紧急服务或在遇到特定事件时发送重要的控制信息。 socket的状态 在常见的套接字模型中套接字的状态可分为以下几种 未连接unconnected套接字没有与对方建立连接处于初始状态或者已关闭状态监听listening服务器套接字正在等待客户端连接请求。这通常用于服务端创建一个监听套接字以接收客户端的连接请求连接已建立connected套接字成功与远程对等体建立连接并可以进行数据传输关闭等待closing套接字已发送关闭请求正在等待对方的相应或确认关闭已关闭closed套接字连接已经关闭并且不再可用不可再次连接 除了以上套接字状态套接字在某一时刻拥有不同的状态指示符 可读readable套接字上有数据可供读取。可以使用select等异步IO多路复用时检查该状态可写writable套接字上可以写入数据。可以使用select等异步IO多路复用时检查该状态异常exceptional表示套接字遇到异常情况例如带外数据到达或者发生错误等。可以使用select等异步IO多路复用时检查该状态 这些状态指示符是用于通知应用程序在某一时刻的特定状态以进行相应的处理。
http://www.zqtcl.cn/news/748822/

相关文章:

  • wordpress 付费剧集网站坐什么网站能用到html5
  • 孝感房产网站建设wordpress E405
  • 做窗帘网站图片大全WordPress一键安装安全
  • 怎样查询网站的备案号广西住房和城乡建设厅网站证件
  • 网站区域名怎么注册网站群建设 中标
  • 官方网站 建设情况汇报网页设计开发培训
  • 门户网站的细分模式有房价暴跌开始了
  • 公司备案查询网站备案江苏省网站备案系统
  • 专业网站制作公司采用哪些技术制作网站?seo求职
  • 服装网页设计网站有个做名片什么的网站
  • 购买网站平台如何做分录泰安网站开发公司
  • 音乐介绍网站怎么做的光辉网络 石家庄网站建设
  • 沈阳网站建设搭建天元建设集团有限公司开票信息
  • 昆明网站建设公司哪家好预约网站模板
  • 自己怎么申请网站空间浙江省建设科技推广中心网站
  • 网站后台管理系统怎么添加框wordpress上传之后
  • 网站编辑属于什么行业义乌做网站哪家好
  • 沂水网站开发移动知识库管理系统
  • 成都有哪些网站建设的公司河南网站建设优化推广
  • 小说投稿赚钱的网站网站后台管理系统多少钱
  • 中国建设银行国际互联网网站网站是用什么做的
  • 做建设网站的活的兼职网络推广专员的岗位职责是
  • 韩国 网站设计保定网站开发公司
  • 发外链的网站都要企业注册网站建设的基本概念
  • 网站管理员有哪些权限中文域名网站好不好优化
  • wordpress主题 资源站关闭wordpress自动更新
  • 网站排名怎么上去创建全国文明城市我们应该怎么做
  • 网站 ftp自助建站信息网
  • 做珠宝的网站wordpress获取相关文章
  • 网站开发视频 百度云视频资源的网站怎么做