当前位置: 技术问答>linux和unix
select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
来源: 互联网 发布时间:2015-12-16
本文导语: socket客户端使用select+read 的方式连接到服务器, 客户端根据 select的返回来读socket, 如果服务器发送完数据后, 调用close 关闭了socket, 那么这时客户端的select调用是不是会返回,并且 其后的read会返回0代表服务器端已经...
socket客户端使用select+read 的方式连接到服务器, 客户端根据
select的返回来读socket, 如果服务器发送完数据后, 调用close
关闭了socket, 那么这时客户端的select调用是不是会返回,并且
其后的read会返回0代表服务器端已经关闭了socket??
select的返回来读socket, 如果服务器发送完数据后, 调用close
关闭了socket, 那么这时客户端的select调用是不是会返回,并且
其后的read会返回0代表服务器端已经关闭了socket??
|
当连接的读这一半被关闭(也就是说接收了FIN的TCP连接).对这样的套接口的读操作将不阻塞且返回0(既文件结束符).
所以当连接的一半被关闭,select认为准备好读返回.
所以当连接的一半被关闭,select认为准备好读返回.