server.listen (5) против многопоточности в программировании сокетов - PullRequest
0 голосов
/ 21 декабря 2018

Я работаю над программированием сокетов в Python.Я немного запутался в концепции s.listen (5) и многопоточности.

Как я знаю, s.listen (5) используется для того, чтобы сервер мог прослушивать до 5 клиентов.

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

Пожалуйста, объясните мне, в каком состоянии мы используем многопоточность?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Как я знаю, s.listen (5) используется для того, чтобы сервер мог прослушивать до 5 клиентов.

Нет.s.listen(5) объявляет отставание размера 5. Это означает, что прослушивающий сокет пропустит 5 запросов на соединение в ожидании, заявленных до того, как они будут приняты.Каждый раз, когда запрос на соединение принимается, он больше не находится в состоянии ожидания.Таким образом, нет никаких ограничений (кроме ресурсов сервера) на число принятых соединений.

Обычное использование многопоточности - запуск нового потока после того, как соединение было принято для обработкиэта связь.Альтернативой является использование select в одном потоке для обработки всех соединений в одном потоке.Это было правилом до того, как многопоточность стала распространенной, но это может привести к более сложным программам

0 голосов
/ 21 декабря 2018

Вам нужно будет использовать многопоточность для обработки нескольких клиентов.Когда вы принимаете соединение, вы получаете новый экземпляр сокета, который представляет соединение с этим новым клиентом.Теперь давайте предположим, что вы создаете чат и вам нужно получить данные от одного клиента и отправить их всем подключенным клиентам, если вы не используете многопоточность, вам нужно будет реализовать непроизводительную логику с использованиемодин цикл процесса для обхода подключенных клиентов, читающих каждый из них, и в конце концов отправляет им данные, но у вас будет другая проблема, потому что функция прослушивания создает прерывание ввода-вывода, которое ожидает, пока новый клиент не попытается подключиться, если вы не используете негнездоВсе дело в архитектуре, производительности и хороших методах.

Хорошее чтение о многопоточности перейдите по этой ссылке https://techdifferences.com/difference-between-multiprocessing-and-multithreading.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...