文件描述符就绪的条件(可读可写)

下列情况下,socket可读:

1.socket内核接收缓冲区中的字节数大于或者单人公寓其低水位的标记SO_RCVLOWAT标记。此时,我们可以无阻塞的该socket,并且读操作的返回值大于0;
2.socket通信的对方关闭连接,此时对该socket的读操作将返回0;
3.监听socket上有新的连接请求;
4.socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除错误

下列情况下,socket可写:

1.socket内核发送缓冲区中的可用字节数大于或者等于其低水位标记SO_SNDLOWAT,此时我们可以无阻塞的读该socket,并且返回值大于0;
2.socket的写操作被关闭,对写操作被关闭的socket执行写操作会触发SIGPIPE的信号;
3.socket使用非阻塞connect连接成功或者失败之后;
4.socket上有未处理的错误,此时我们可以通过getsockopt来读取和清除该错误。

网络程序中,select能处理的异常情况只有一种:socket上接受到带外数据

发布了46 篇原创文章 · 获赞 0 · 访问量 435

猜你喜欢

转载自blog.csdn.net/weixin_42226134/article/details/104375259
今日推荐