Мне нужна помощь с socket.listen.
My max_connections имеет значение 1. но даже после подключения клиента, если другой клиент пытается подключиться, на стороне клиента он сообщает, что он подключился, хотя сервер не сообщает ничего нового.
Мое приложение находится между одним сервером и одним клиентом. и если какой-либо другой клиент пытается подключиться, когда уже есть подключение, я хочу, чтобы в этом подключении было отказано.
Пожалуйста, помогите с некоторыми идеями.
Спасибо большое.
3 ответа
Вы не предоставили никакого кода, но заголовок вашего сообщения ссылается на Socket.Listen
. Параметр, присвоенный Socket.Listen
, не является максимальным количеством подключений, скорее это размер «невыполненных» входящих подключений.
Это означает, что когда кто-то пытается подключиться, но ваш сервер еще не Accept()
установил соединение, эти клиенты находятся в очереди «невыполненных работ». Вы установили размер равным 1, поэтому только 1 клиент может ожидать подключения одновременно.
Этот параметр не влияет на общее количество подключений к вашему приложению.
Вы можете использовать свойство IsConnected в своем TCPClient, чтобы проверить, существует ли уже соединение, и принять решение об этом.
Я предлагаю вам принять новое клиентское соединение, но приобрести семафор a> непосредственно перед доступом к обернутому серверу и отпустите его сразу после доступа. Этот подход позволяет вам контролировать, сколько клиентов одновременно используют обернутый сервер.
Похожие вопросы
Новые вопросы
sockets
Конечная точка двунаправленного межпроцессного взаимодействия. Это часто относится к потоку процессов через сетевое соединение, но ни в коем случае не ограничивается этим. Не следует путать с WebSocket (протоколом) или другими абстракциями (например, socket.io).