Я хочу ограничить доступ к устройству для более чем 4 клиентов по IP-адресу.
struct sockaddr_in peerAddr;
SOCK_LEN_TYPE peerAddrLen = sizeof(peerAddr);
// Yes, socket is free, try to accept a connection on it
connectionSocketArr[sockIdx] = accept(listenSocket, (struct sockaddr *) &peerAddr,
&peerAddrLen);
Вы можете использовать sockIdx
переменная, чтобы увидеть, сколько клиентов в настоящее время подключено.
Вместо того, чтобы хранить сокет, возвращенный accept
непосредственно в массиве, сохраните его во временной переменной. Если sockIdx
больше чем 3
тогда новому клиенту не разрешено подключаться, поэтому отправьте клиенту сообщение об этом и закройте сокет. В противном случае сохраните сокет в массиве и увеличьте sockIdx
,
Других решений пока нет …