6.卷1(套接字联网API)---I/O复用 : select 和 poll 函数
1.什么情况下使用IO复用1.客户端处理多个描述符;2.客户端处理多个套接字;3.TCP服务器既要处理监听套接字,又要处理连接套接字;4.一个服务器既要处理TCP,又要处理UDP;5.一个服务器要处理多个服务或者多个协议;2.I/O模型阻塞式IO(默认情况下,所有套接字都为阻塞的);非阻塞式IO(当所有IO请求操作非得把本进程投入睡眠才能完成时,不要把本进程投入睡眠,轮询);IO复用(阻塞在select,poll的某一个只上,而不是阻塞在真正的IO系统调用之上,需要2个系统调用);信号驱动IO(通过sigaction安装一个信号处理函数,主循环继续,数据准备好时,内核为该进程产生一个SIGIO信号,自己在信号处理函数中复制数据);异步IO(告诉内核启动某个操作,并在内核在整个操作完成之后通知我们。与信号驱动IO的区别在于,信号驱动IO是由内核告知我们何时启动一个IO操作。而异步IO是由内核通知我们IO操作何时完成,即信号在数据被复制到应用缓冲区时产生);3.描述符准备就绪的条件一个套接字准备好读:1.该套接字接收缓冲区的数据字节大于套接字接收缓冲区低水位;2.该连接的读半部关闭,对这样的套接字的读操作不阻塞返回0;3.该套接字是一个监听套接字且已经完成的连接数不为0;4.其上有一个套接字错误待处理;一个套接字准备好写:1.该套接字发送缓冲区中可用空间大于套接字发送缓冲区低水位;2.该连接写半部关闭;3.使用非阻塞connect的套接字已经建立连接,或者connect已失败告终;4.该套接字有错误待处理;4.shutdown 与 close 区别1.close 只是把计数器 -1,直到0时才真正关闭;2.close 终止两个方向上的数据传送,shutdown 可以只终止一个方向;5.避免拒绝服务型攻击当服务器处理多个客户时,它绝对不能阻塞于只与某个单个客户相关的函数调用。1.使用非阻塞IO;2.让每个客户由单独的控制线程提供服务;3.对IO操作设置一个超时;
1.概述
2.I/O模型
3.select 函数
4.str_cli 函数
5.批量输入
6.shutdown 函数
7.str_cli 函数
8. TCP 回射服务器程序
9.pselect 函数
10.poll 函数
11.TCP 回射服务器程序
6.卷1(套接字联网API)---I/O复用 : select 和 poll 函数相关推荐
- UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...
UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...
- 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
本节书摘来自异步社区<UNIX网络编程 卷1:套接字联网API(第3版)>一书中的第2章,第2.1节,作者:[美]W. Richard Stevens , Bill Fenner , An ...
- 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版)
图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版) 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版) UNIX网络编程 卷1:套接字联 ...
- 《UNIX网络编程 卷1:套接字联网API》学习笔记——基本TCP套接字编程
UNIX网络编程--基本TCP套接字编程 socket 函数 connect 函数 bind 函数 listen 函数 accept 函数 fork 和 exec 函数 并发服务器 close 函数 ...
- 《Unix网络编程卷1:套接字联网API》读书笔记
第一部分:简介和TCP/IP 第1章:简介 第2章:传输层:TCP.UDP和SCTP TCP:传输控制协议,复杂.可靠.面向连接协议 UDP:用户数据报协议,简单.不可靠.无连接协议 SCTP:流控制 ...
- 《UNIX网络编程:套接字联网API》啃书笔记(第8UDP套接字编程、11章地址转换)
基本UDP套接字编程 下图为UDP客户/服务器程序的函数调用: 注意客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目的地的地址作为参数.类似的,服务器不接受来自客 ...
- 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决
<Unix网络编程卷1-套接字联网API>是本好书. 但是第一个例子不是很好编译. 需要如下步骤: 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其rea ...
- socket套接字TCP API
socket套接字TCP API socket概念 socket又称"套接字",是计算机网络中进程间通信数据通道的一个端点,或称之为句柄.IP地址+端口号就可以唯一确定一个sock ...
- 从Nginx绑定80端口学套接字编程
<UNIX网络编程(卷1):套接字联网API(第3版)> ngx_connection.c ngx_int_t ngx_open_listening_sockets(ngx_cycle_t ...
- 008 查看套接字选项是否受支持(获取当前环境下套接字选项默认值)
代码来源:<UNIX网络编程 卷1:套接字联网API> 说明:为以后查看套接字默认值使用 代码: 1 /* include checkopts1 */ 2 /* *INDENT-OFF* ...
最新文章
- ETSI GS MEC 016,Device application interface
- 电影点评系统论文java_毕业设计(论文)-基于web的电影点评系统分析与设计.docx...
- 获取元素到页面顶部的距离_组成网站页面结构的元素有哪些?
- debian下运行netstat失败
- SpringMVC 参数校验
- qt中QList使用removeAt()删除元素
- 把爬取信息导出到mysql,关于爬虫学习的一些小小记录(四)——爬取数据存入数据库...
- SPSS数据分析之描述性统计、区间估计与假设检验【操作详解】
- Android5.0和6.0之后新增的控件说明
- 浙江大华 研发类试题
- android word 转pdf插件下载,word转pdf转换器
- Excel中数据截取
- 随机存储器:SRAM、DRAM、SDRAM的区别
- Ubuntu18.04之lightdm取代gdm
- Android中相册的实现
- Python学的好,工作不愁找
- (附源码)ssm南工二手书交易平台 毕业设计172334
- 航拍“中国南北地理分界线” 感受独特景观
- AutoCAD关于选择的一些技巧(如何高效地框选)
- jquery实现手风琴展开效果
热门文章
- gcc 找不到 boot python 链接库的问题: /usr/bin/ld: cannot find -lboost_python
- 什么是OpenStack
- sudo执行脚本找不到环境变量
- js中自己实现each方法来遍历多维数组
- hdu 3339 In Action
- 类似于Function.bind的dojo.hitch --dojo Quick Start/dojo入门手册4
- 互联网大厂跳槽鄙视链
- R for data science 之 stringr包
- The pom for XXX is missing,no dependency information available
- 2018.09.02 bzoj1025: [SCOI2009]游戏(计数dp+线筛预处理)