2013-12-08 3 views
0

Если связать сокет-сервер, как это:нерест более 5 клиентских запросов на сокет

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
server.bind((host,port)) 
server.listen(5) 

и использовать что-то вроде выбора() и цикл снова и снова каждого соединения клиента, пока клиент не закроет его для обмена сообщениями в то время как цикл (для здесь) запускается одновременно, мы можем одновременно выполнять обмен сообщениями сервер-клиент или клиент-клиент. Можем мы?

Но проблема, которую я прочитал, заключается в том, что сервер не может ставить в очередь более 5 клиентов для обработки по одному;

Какие существуют методы для запуска нескольких таких экземпляров сервера, при условии, что критерий состоит в том, что несколько таких серверных процессов начинают прослушиваться, если клиентские очереди достигают уровня 5?

ответ

1

Ограничение 5, о котором вы беспокоитесь, - это размер очереди записей для прослушивания. Это количество соединений, которые система будет удерживать до тех пор, пока не начнет отклонять новые соединения. Когда вы accept, в этой очереди освобождается соединительная комната. Таким образом, до тех пор, пока вы принимаете свои соединения своевременно, это не вызывает беспокойства при нормальных условиях нагрузки. (BTW 5 находится на нижней стороне вещей. IIR по умолчанию максимальный для процесса на linux, например, равен 128.)

+0

wo thats good, 128. не знал. Спасибо за разъяснения! – user2290820

2

Когда вы получаете соединение, вы можете либо вызвать поток/процесс для обработки этого соединения.

На главной теме вернуться, чтобы слушать другое соединение

5 битой длина списка, которые один удержание.

Подобно щитового оператора

+0

Я не понимаю. Когда сервер создает клиентский сокет для этого «клиента», вы имеете в виду, что это число уменьшается на 1? (5 идет до 4?), Даже когда клиентский сокет активно задействован? – user2290820

+1

Когда кто-то пытается подключиться к вашему серверу, счетчик уменьшается с 5 до 4. Когда вы принимаете соединение, создавая «клиентский сокет», счетчик снова увеличивается до 5. – smeso

1

Возможно, вы поняли функцию неудовлетворенного аргумента. Предел 5 применяется только к соединению, которое еще не принято.

+0

Я просто попросил уточнить это сомнение в комментарии раздел в нитке ниже – user2290820

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