UNIX网络编程卷一:第十四章 高级I/O
2015-08-12 10:01
399 查看
高级I/O
可设置超时时间
read和write的三个变体:
1) recv send : 通过第四个参数从进程到内核传递标志
2) readv writev : 允许指定往其中输入数据或从其中输出数据的缓冲区向量.
3) recvmsg sendmsg: 结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力.
套接字超时
在套接字I/O上设置超时有3种方法:
1) 调用alarm (信号处理)
它在指定超时期满时产生SIGALRM信号.
相应的函数,如 connect, recvfrom 会被终端, 并设置errno=EINTR
2) 使用select (有设置时限功能)
3) 使用较新的套接字选项: SO_RCVTIMEO SO_SNDTIMEO. 但是并非所有时限都支持.
超时发生时, errno=EWOULDBLOCK
recv send
比read write多一个参数flag.
readv writev
允许单个系统调用读入到或写出自一个或多个缓冲区.成为 分散读和集中写. (没理解)
recvmsg sendmsg
最通用的I/O函数. read readv recv recvfrom 都可以替换成recvmsg.
可设置超时时间
read和write的三个变体:
1) recv send : 通过第四个参数从进程到内核传递标志
2) readv writev : 允许指定往其中输入数据或从其中输出数据的缓冲区向量.
3) recvmsg sendmsg: 结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力.
套接字超时
在套接字I/O上设置超时有3种方法:
1) 调用alarm (信号处理)
它在指定超时期满时产生SIGALRM信号.
相应的函数,如 connect, recvfrom 会被终端, 并设置errno=EINTR
2) 使用select (有设置时限功能)
3) 使用较新的套接字选项: SO_RCVTIMEO SO_SNDTIMEO. 但是并非所有时限都支持.
超时发生时, errno=EWOULDBLOCK
recv send
比read write多一个参数flag.
readv writev
允许单个系统调用读入到或写出自一个或多个缓冲区.成为 分散读和集中写. (没理解)
recvmsg sendmsg
最通用的I/O函数. read readv recv recvfrom 都可以替换成recvmsg.
相关文章推荐
- HttpClient/ HttpUrlConnection/UrlConnection
- SM32W108无线射频模块多个节点之间通信实例
- HTTP Debugger Pro v6.4 + Keygen For HTTP Debugger Pro v6.x
- 使用charles proxy for Mac来抓取手机App的网络包
- centos 设置网络 /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0
- 使用NSURLConnection发送http网络请求
- 真有超级IP?亿万级泡沫谁来接盘
- HttpUrlConnection和HttpClient的使用(doGet( )、doPost( )方法)
- 打造安全的App!iOS安全系列之 HTTPS
- 打造安全的App!iOS安全系列之 HTTPS
- 无线网络
- C++ 简单实现HTTP GET/POST 请求
- HTTP协议浅析 (2013-08-12 19:48:14) http://blog.sina.com.cn/s/blog_987d7bdd0101nxtu.html
- HDU 4279 Number(2012天津网络游戏---数论分析题)
- C#网络编程(接收文件) - Part.5
- C#网络编程(订立协议和发送文件) - Part.4
- C#网络编程(同步传输字符串) - part.2
- 学习indy组件之一idhttp的使用方法
- [delphi]indy idhttp post方法
- Qt 网络开发基础