Я нахожусь в Windows. У меня есть сервер с блокирующим сокетом, который должен принимать клиента за раз и разрешить ему выполнять некоторые операции над буфером. Когда первый клиент заканчивается, он должен обслуживать второй и т. Д. Однако, похоже, он принимает две связи. Он позволяет только первому клиенту выполнять операции, а когда второй отключается, он обслуживает второй. Третий клиент не может подключиться.Почему мой клиент принимает 2 подключения?
Сервер
import socket
import sys
HOST = ''
PORT = 5552
buffer = []
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.bind((HOST, PORT))
except socket.error:
sys.exit()
sock.listen(1)
client, client_addr = sock.accept()
#OPERATIONS
Client
import socket
import sys
def connect(sock, ip, port):
try:
sock.connect((ip, port))
except socket.error:
sys.exit()
def send(sock, message):
try:
sock.sendall(message)
except socket.error:
return -1
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = 5552
try:
ip = socket.gethostbyname(host)
except socket.gaierror:
sys.exit()
connect(sock, ip, port)
#OPERATIONS
Он ведет себя точно так же. Если я увеличиваю аргумент backlog, он принимает больше подключений, но если я установил его на ноль, это будет одинаково. –