在服务器/客户端设置中,我有一个服务器与少数(目前为 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
}
最近我不得不添加两个新的套接字,将来我可能需要添加更多。什么时候使用 FD_SETSIZE 而不是计算的 set_size?