UNP学习第六章

Posted 思而不学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNP学习第六章相关的知识,希望对你有一定的参考价值。

一、I/O复用典型的网络应用场合

  • 当客户处理多个描述字时,必须使用I/O复用,这在前一段中已做了描述。
  • 一个客户同时处理多个套接口时可能的,但很少出现。
  • 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。
  • 如果一个服务器即要处理TCP,又要处理UDP。
  • 如果一个服务器要处理多个服务或者多个协议。

 

二、I/O模型

一个输入操作一般有两个不同的阶段:

1.等待数据准备好

2.从内核到进程拷贝数据

 

五个I/O模型基本区别:

  • 阻塞I/O

 

  • 非阻塞I/O模型

 

  • I/O复用模型

 

  • 信号驱动I/O模型

 

  • 异步I/O模型

 

三、select函数

#include <sys/select.h>
#include <sys/time.h>

int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset
    const struct timeval *timeout);
返回:准备好描述字的正数目0超时,-1出错
maxfdp1:整数值,集合中所有文件描述符范围,所有文件描述符最大值+1
readset:指向一组等待可读性检查的套接口
writeset:指向一组等待可写性检查的套接口
exceptset:指向一组等待错误检查的套接口
timeout:select()最多等待时间,对阻塞操作则为NULL

timeout有三种可能:

1.永远等待下去:仅在有一个描述字准备好I/O时才返回,为此,我们将参数timeout设置为空指针

2.等待固定时间:再有一个描述字准备好I/O后返回,但不超过timeout

3.根本不等待:检查描述字后立即返回,这称为轮询。timeout指向0

 

以上是关于UNP学习第六章的主要内容,如果未能解决你的问题,请参考以下文章

UNP——第六章,多路转接IO——select

第六章.解决大问题

数据结构:第六章学习小结

第六章 函数[DDT书本学习 小甲鱼]

第六章 函数[DDT书本学习 小甲鱼]

Android的学习第六章(布局一LinearLayout)