次の問題が発生しました。
select ()を使って複数接続できるサーバーを作りました。ただし、ソケットが「クライアントの切断」などのエラーを受け取った場合にも、selectはクライアント ( FD_SETのインデックス) を返します。
recv ()を呼び出さずにソケットをチェックすることは可能ですか? 受信するには、「 BufferPool」からバッファを取得する必要があるためです
サンプルコード:
int ret = recv(client, buffer_pool->get(), BUFFER_SIZE, 0);
if(ret == -1) ... // something went wrong
それでは、もう一度バッファを解放する必要があります。これは、プール内の 1 つのバッファをほとんど無駄にしていました。(短い時間に)
recv () を呼び出さずにソケットを確認することはできませんか?