我正在编写一个客户端-服务器程序。服务器正在等待select()
读取准备就绪。如果它准备好了,服务器正在收集数据并打印。暂时一切都很好,但过了一段时间,socket设置为失败。现在我想重写我的程序来阻止这些错误条件。所以我浏览了 Richard Stevens 的“Unix Network Programming”,其中说明了解除阻塞的 4 个条件。以下是引起我注意的两个条件readfd1
readfd1
recv()
errno
ETIMEDOUT
select()
A. client sent FIN, here return value of `recv()` will be `0`
B. some socket error, here return value of `recv()` will be `-1`.
我的问题是,套接字错误会关闭连接吗?如果是这样,那么为什么以上两个条件是分开的。如果没有,recv()
套接字上的 next 工作吗?