2010-01-13 3 views
0

Мне нужна помощь с socket.listen.C# Socket.Listen (MAX_CONNECTIONS);

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

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

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

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

+0

Это может быть ошибка на стороне клиента? Возможно, клиент сообщает, что он связан, когда это не так? – Mark

ответ

5

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

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

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

+0

ok. в этом есть смысл. Я думал, что у меня неправильная идея относительно Слушания. Как только я подключился, я могу просто закрыть прослушивающее гнездо, и это должно позаботиться об этом, я думаю .. – iTEgg

0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^