Ниже вы видите программу на python, которая действует как сервер, прослушивающий запросы на подключение к порту 9999:
# server.py
import socket
import time
# create a socket object
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
host = socket.gethostname()
port = 9999
# bind to the port
serversocket.bind((host, port))
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
currentTime = time.ctime(time.time()) + "\r\n"
clientsocket.send(currentTime.encode('ascii'))
clientsocket.close()
Вопрос в том, какова функция параметра метода socket.listen()
(т. socket.listen()
5
).
На основе учебных пособий по интернету:
Аргумент backlog указывает максимальное количество подключений в очереди и должен быть не менее 0; максимальное значение зависит от системы (обычно 5), минимальное значение равно 0.
Но:
- Что это за очереди?
- Имеет ли это значение для запросов клиентов? (Я имею в виду, отличается ли сервер, работающий с
socket.listen(5)
от сервера, работающего сsocket.listen(1)
при принятии запросов на подключение или при получении данных?) - Почему минимальное значение равно нулю? Не должно ли быть хотя бы
1
? - Есть ли предпочтительное значение?
- Это
backlog
определено только для TCP-соединений или оно также применимо для UDP и других протоколов?