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