2014-01-23 3 views
0

Мое гнездо сервера поддерживает максимально возможные соединения. Но как я могу ограничить количество параллельных подключений таким образом, чтобы он мог поддерживать не менее 5, но не более 20 клиентов одновременно.Параллельное соединение с ограничителем розетки

+0

В какой операционной системе вы нацеливаетесь? – eyalm

ответ

0

У вас есть два варианта:

  1. Просто не называют больше accept() раз, то вы готовы к обработке. Если у вас уже установлено 20 клиентов, перестаньте звонить accept(), пока клиент не отключится первым.

  2. обычно звонит accept(), но сразу же звоните close() (или closesocket() на Windows), если у вас уже есть 20 клиентов.

    a. Вариант этого в Windows только состоит в том, чтобы вместо этого использовать WSAAccept(). Он позволяет указать обратный вызов для условного принятия клиентов. Вы можете вернуть его CF_REJECT, а 20 клиентов уже подключены. Таким образом, WSAAccept() никогда не позволит подключить более 20 клиентов одновременно.

+0

В коде был бесконечный цикл с for (;;), я изменил его на for (int i = 0; i <20; i ++). его как для (;;) {accept(), forking ....}. Я думаю, вы имеете в виду то, как я это сделал. – user2677682

Смежные вопросы