サーバー/クライアントのセットアップでは、サーバーが少数の(現時点では4つ)異なるソケットでクライアントに接続しています。現時点では、計算されたset_sizeでselectを使用していますが、代わりにFD_SETSIZEを使用する価値がある前に、上限は何ですか?
以下は、ポイントを説明するためのいくつかのコード例です。最初にセットを作成します。
FD_ZERO(&set);
FD_SET(socket1, &set);
FD_SET(socket2, &set);
FD_SET(socket3, &set);
FD_SET(socket4, &set);
set_sizeの計算方法は次のとおりです。
set_size = MAX(socket1, socket2);
set_size = MAX(set_size, socket 3);
set_size = MAX(set_size, socket4);
set_size += 1;
そして使用法:
while ((cnt = select(set_size, &set, NULL, NULL, &t)) != -1 || errno == EINTR) {
if (cnt > 0)
// Do different stuff depending what socket is active
else
// Keep everything alive and add the sockets to the set again
}
最近、2つの新しいソケットを追加する必要があり、将来さらに追加する必要があるかもしれません。計算されたset_sizeではなくFD_SETSIZEを使用するのはいつですか?