C # Socket.Listen (MAX_CONNECTIONS); - PullRequest
       31

C # Socket.Listen (MAX_CONNECTIONS);

0 голосов
/ 14 января 2010

мне нужна помощь с socket.listen.

мой max_connections установлен на 1. но даже после подключения клиента, если другой клиент пытается подключиться, на стороне клиента он говорит, что подключился, хотясервер не сообщает ничего нового.

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

, пожалуйста, помогите с некоторыми идеями.

большое спасибо.

Ответы [ 3 ]

5 голосов
/ 14 января 2010

Вы не указали код, но заголовок вашего сообщения ссылается Socket.Listen. Параметр, заданный для Socket.Listen, не является максимальным количеством соединений, скорее, это размер «отставания» входящих соединений.

Это означает, что когда кто-то пытается подключиться, но ваш сервер еще не Accept() установил соединение, эти клиенты находятся в очереди "backlog". Вы установили размер 1, поэтому только один клиент может ожидать подключения одновременно.

Этот параметр не влияет на общее количество подключений, разрешенных для вашего приложения.

0 голосов
/ 14 января 2010

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

0 голосов
/ 14 января 2010

Вы можете использовать свойство IsConnected на вашем TCPClient, чтобы проверить, существует ли уже соединение и принять решение об этом.

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