Вопрос

Я пытался найти примеры программирования сокетов и наткнулся на этот скрипт:http://stacklessexamples.googlecode.com/svn/trunk/examples/networking/mud.py

Читая этот скрипт, я нашел эту строку:listenSocket.слушать (5)

Насколько я понимаю - он считывает 5 байт из буфера, а затем что-то с ним делает...

но что произойдет, если с другого конца было отправлено более 5 байт?

в другом месте этого скрипта он проверяет входные данные на соответствие 4 командам и видит, есть ли \ n в строке.разве такие команды, как "look" плюс \ n, не занимают более 5 байт?

Алан

Это было полезно?

Решение

Следующее применимо к сокетам в целом, но оно должно помочь ответить на ваш конкретный вопрос об использовании сокетов из Python.

Socket.listen() используется на сервер сокет для прослушивания входящих запросов на соединение.

Параметр, передаваемый для прослушивания, называется отставание и это означает, сколько соединений должен принять сокет и поместить в ожидающий буфер, пока вы не завершите вызов Accept().Это относится к соединениям, которые ожидают подключения к сокету вашего сервера между моментом, когда вы вызвали Listen(), и моментом, когда вы завершили соответствующий вызов Accept().

Итак, в вашем примере вы устанавливаете отставание в 5 подключений.

Примечание..если вы установите невыполненные соединения на 5, следующие соединения (6-е, 7-е и т. д.) будут удалены, а соединительный сокет получит ошибка подключения сообщение (что-то вроде сообщения «хост активно отказался от соединения»)

Другие советы

Это может помочь вам понять код: http://www.amk.ca/python/howto/sockets/

Аргумент 5 Для listenSocket.listen это не количество байтов для чтения или буферизации, это backlog:

socket.listen(backlog)

Прослушайте подключения, сделанные к сокету .Аргумент backlog указывает максимальное количество подключений в очереди и должно быть не менее 1;максимальное значение зависит от системы (обычно 5).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top