`

UNP_1_Chapter 6__select_pool

阅读更多
http://blog.csdn.net/wbczyh/archive/2008/02/21/2111880.aspx
IO事件、定时器事件、信号事件


服务器TCP正确地给客户TCP发送一个FIN,
但客户进程阻塞于从标准输入中读入,此时它将看不到这个EOF。

此时需要一种预先告知内核的能力,内核一旦发现进程指定的I/O条件就绪,就通知进程。
I/O复用可由select和poll函数支持。

I/O复用场景:
1、客户处理多个描述符;
2、处理多个socket;
3、TCP服务器,即监听socket,又处理已连接的socket;
4、使用TCP,又要使用UDP;
5、处理多个服务或协议;


五种I/O模型:
1、阻塞式,blocking
2、非阻塞式,non blocking,轮询(polling)
3、I/O复用,multiplexing,回调类机制
4、信号驱动,signal-driven,非阻塞、回调类机制。信号在数据准备好后回调
5、异步I/O,asynchronous,与4相同,只是信号在数据复制后回调
前四种,I/O操作时,将请求进程阻塞。P127 6-6图



//返回:就绪句柄
int select(int maxfd1,          //文件描述符的最大值加1
            fd_set *readset,    //监听读
            fd_set *writeset,   //监听写
            fd_set *exceptset,  //监听异常
    struct timeval *timeout);

//  select常错:
//  最大描述符加1;
//  描述符集是(ket -- set)参数,FD_SET(int fd, fd_set *fdset);


struct timeval
{
  long    tv_sec;         /* seconds        秒数*/
  long    tv_usec;        /* microseconds 微秒数*/
};
//  不懂内核对微秒的支持不同,不要太微秒。。。
//  永远等待
//  等待一段时间
//  根本不等待,轮询


void FD_ZERO(fd_set *fdset);          //文件描述符集清空,必须对其进行初始化
void FD_SET  (int fd, fd_set *fdset); //增加一个新的文件描述符
void FD_CLR  (int fd, fd_set *fdset); //删除一个文件描述符
int  FD_ISSET(int fd, fd_set *fdset); //判断文件描述符是否在该集合中

分享到:
评论

相关推荐

    UNP_v2_CN经典图书part3part4

    在UNP_v2中,作者深入浅出地讲解了网络编程的基础知识,包括TCP/IP协议栈的工作原理、套接字API的使用、TCP和UDP连接的建立与管理、多路复用技术(如select、poll和epoll)、并发服务器设计、套接字选项、错误处理...

    nercoeus#UNP_reading_notes#27.IP选项1

    1. NOP:单字节选项,典型的用途是为某个后续选项落在 4 字节边界上进行填充 2. EOL:单字节选项,终止选项的处理 6. Record route 7.

    unp源码_UNIX_

    "unp源码_UNIX_"这个标题暗示我们正在讨论一个与UNIX操作系统相关的开源代码库,可能是某个软件或工具的实现,其名称为UNP。在UNIX系统中,UNP可能代表"Unix Network Programming",这是一个广泛使用的术语,通常指...

    TCPIP协议详解卷三.rar

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议——高清文字(china-pub经典系列)

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议.rar

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCPIP协议详解卷二:实现

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCP-IP详解卷三

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCPIP协议详解卷3-事务协议

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    TCP-IP详解卷3.rar

    整套电子书分四部分上传 TCP-IP详解卷1.rar;TCP-IP详解卷2_1.rar TCP-IP详解卷2_2.rar;TCP-IP详解卷3.rar 都上传了。只下第一部分不全 目 录 译者序 前言 第一部分 TCP事务协议 第1章 T/TCP概述 1 1.1 概述 1 1.2...

    TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

    第1章 T/TCP概述 1.1 概述 1.2 UDP上的客户-服务器 1.3 TCP上的客户-服务器 1.4 T/TCP上的客户-服务器 1.5 测试网络 1.6 时间测量程序 1.7 应用 1.8 历史 1.9 实现 1.10 小结 第2章 T/TCP协议 2.1 概述 2.2 T/TCP中...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/...

    unp.rar_W. Richard Stevens_c/C++_unp

    【标题】"unp.rar_W. Richard Stevens_c/C++_unp" 指的是一个压缩包文件,其中包含了著名计算机科学家W. Richard Stevens的作品,主要聚焦于C/C++编程语言,特别是关于网络编程的内容。"unp"可能是《UNIX Network ...

    Java网络编程--Unix域协议:实现

    17.2和17.3中提及的全局变量(如图17-2所示)维护了协议的状态和资源管理,例如`unp_deferred`用于无用单元的收集,`unp_gc_int`记录是否正在执行收集,`unp_ino_t`分配给新套接字的伪i_node号,以及缓冲区大小的...

    TCP_IP详解卷1

    第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 ...

    unp unix网络编程

    6. **I/O模型**:Unix提供了多种I/O模型,如阻塞I/O、非阻塞I/O、多路复用(select、poll、epoll)和信号驱动I/O等,理解并灵活运用这些模型能提高程序的效率和可扩展性。 7. **并发处理**:在服务器端,通常需要...

Global site tag (gtag.js) - Google Analytics