Select call在客户端断开连接时设置服务器的套接字

Select call在客户端断开连接时设置服务器的套接字,c,sockets,select,server,client,C,Sockets,Select,Server,Client,我在玩一个有多个客户机的C服务器时注意到一件事:每当客户机与服务器断开连接时,服务器只需调用客户机文件描述符上的close,我正在使用select处理来自多个客户端的消息的select调用将服务器的套接字设置为可以读取,并且调用的返回值为0。忽略此事实会阻止服务器,因为select会在服务器套接字设置为就绪时继续返回0,而不是等待其他套接字。有人断开连接后,在服务器可以接受新连接之前,是否需要对服务器套接字进行一些额外的清理?当服务器从recv获得0或-1时,它应该在该套接字上调用close,此

我在玩一个有多个客户机的C服务器时注意到一件事:每当客户机与服务器断开连接时,服务器只需调用客户机文件描述符上的close,我正在使用select处理来自多个客户端的消息的select调用将服务器的套接字设置为可以读取,并且调用的返回值为0。忽略此事实会阻止服务器,因为select会在服务器套接字设置为就绪时继续返回0,而不是等待其他套接字。有人断开连接后,在服务器可以接受新连接之前,是否需要对服务器套接字进行一些额外的清理?

当服务器从recv获得0或-1时,它应该在该套接字上调用close,此外,is应确保从传递给select的读写fd集中删除此套接字,否则select将返回错误,表明其读写fd集中存在错误fd

非常感谢!事实证明,在向FDSET添加套接字时,我检查了错误的标志