linux系统之select下可读/可写的产生条件

2013年6月17日 由 Creater 留言 »

1.下列四个条件中的任何一个满足时,一个套接口准备好读:
a.该套接口接收缓冲区中的数据字节数大等于套接口接收缓冲区的低潮标记,对于TCP和UDP而言,其缺省值为1;
b.该连接的读这一半关闭,对这样的套接口的读操作将不阻塞并返回0;
c.该套接口是一个监听套接口且已完成的连接数不为0;(就是accept成功返回)
d.其上有一个套接口错误等待处理,对这样的套接口的读操作将不阻塞并返回-1;

2.下列四个条件中的任何一个满足时,一个套接口准备好写:
a.该套接口发送缓冲区中的可用空间字节数大等于套接口发送缓冲区的低潮标记,对于TCP和UDP而言,其缺省值为2048;
b.该连接的写这一半关闭,对这样的套接口的写操作将产生SIGPIPE信号;
c.该套接口早先使用非阻塞式connect以建立连接,并且连接已经异步建立,或者connect以失败告终;
d.其上有一个套接口错误等待处理,对这样的套接口的写操作将不阻塞并返回-1;
3.select与非阻塞connect一起使用的时候有以下两个注意点:(1)当连接成功建立时,描述字变为可写;(2)当连接建立遇到错误时,描述字变为既可读又可写;

广告位

发表评论

你必须 登陆 方可发表评论.