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

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

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

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

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

0
iTEgg 14 Янв 2010 в 01:06
Могло ли это быть ошибкой на стороне клиента? Возможно, клиент сообщает, что он подключен, а это не так?
 – 
Mark
14 Янв 2010 в 01:14

3 ответа

Лучший ответ

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

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

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

5
SoapBox 14 Янв 2010 в 01:22
Ok. в этом есть смысл. Я думал, что у меня неправильное представление о Listen. как только я установлю соединение, я могу просто выключить прослушивающий сокет, и я думаю, что это должно решить эту проблему ...
 – 
iTEgg
14 Янв 2010 в 01:26

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

0
Tony The Lion 14 Янв 2010 в 01:13