Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Отклонить входящее соединение на TServerSocket


Автор: anikss 18.11.2005, 21:39
Здравствуйте.

Мне нужно сделать так, чтобы к сокету TServerSocket мог присоединиться только один клиент.
Как это сделать? Как можно отклонить входящее соединение на неблокирующем TServerSocket? Очень желательно при том, чтобы клиент получил ошибку.

Спасибо!

Автор: RaIDeR 19.11.2005, 02:09
У TServerSocket'а есть св-во ActiveConnections.

Автор: RA 19.11.2005, 03:11
Код

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin 
if ServerSocket1.Socket.ActiveConnections = 1 then Socket.Disconnect(2);
end;


Автор: anikss 19.11.2005, 03:28
Спасибо большое! А как ошибку на клиенте сгенерировать?

Автор: anikss 19.11.2005, 13:59
Не понимаю в чем дело... Я вот переписал TCustomServerSocket, чтобы он вызывал Listen() не с QueueSize:=SOMAXCONN, а с QueueSize:=1, а все равно коннектится неограниченное количество клиентов smile Подскажите, как сделать, чтобы коннектился только один клиент, а остальным при попытке соединения выдавалось что-то вроде WSAERRCONNREFUSED?

Автор: Mayk 19.11.2005, 14:15
Цитата(anikss @ 19.11.2005, 17:59)
понимаю в чем дело.

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

Кстати, может будет проще закрыть серверный сокет после установки соединения?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)