在服務器/客戶端設置中,我有一個服務器在不同套接字的少數(當前爲4)處與客戶端連接。目前,我使用select來計算set_size,但是在使用FD_SETSIZE之前,上限是多少?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?
謝謝。真的很好的解釋。目前我不擔心太多的性能,但隨着軟件使用量的增加,我可能需要研究性能改進。考慮到這一點,很高興知道從哪裏開始:) –