遇到以下问题:
我制作了一个能够使用select () 处理多个连接的服务器。但是,如果套接字刚刚收到诸如“客户端断开连接”或其他错误之类的错误,则 select 也会返回一个客户端(FD_SET的索引)。
是否可以在不调用recv () 的情况下检查套接字。因为要接收,我需要从我的“ BufferPool ”中获取一个缓冲区
示例代码:
int ret = recv(client, buffer_pool->get(), BUFFER_SIZE, 0);
if(ret == -1) ... // something went wrong
那么我必须再次释放缓冲区,这几乎浪费了我池中的一个缓冲区。(很短的时间)
所以不调用recv () 就不能检查socket吗