Форум: "Сети";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизОграничение количества клиентов у TServerSocket Найти похожие ветки
← →
Sunny Way (2004-05-27 15:12) [0]Добрый день!
Можно ли как-нибудь ограничить число клиентов, которые принимает сервер?
Я знаю единственное плохое решение..
procedure TDCMStore_Server.OnClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if ServerSocket.Socket.ActiveConnections > 1 then
begin
MessageDLg("You can""t make more than one connection to the server",
mtConfirmation,[mbOK],0);
if Socket.Connected then Socket.Close;
end;
end;
← →
Reindeer Moss Eater © (2004-05-27 15:17) [1]В твоем обработчике уже есть два соединения
← →
Digitman © (2004-05-27 15:20) [2]если речь идет о W2k/ХР, то в этих системах существует гораздо более изящное решение задачи (правда, непосредственно не поддерживаемое алгоритмом TServerSocket)
см. ф-цию Winsok2.WSAAccept()
← →
Digitman © (2004-05-27 15:26) [3]в упомянутых системах эта возможность базируется на работающей там опции
см. SetSockOpt(... SO_CONDITIONAL_ACCEPT)
смысл ее установки в том, что переданная параметром в WSAAccept() callback-ф-ция может возвращать false-результат, который в кон.итоге приводит к тому, что отвергнутый с пом.этого механизма клиент в ответ на свой SYN-запрос не получит ACK-квитанцию, что для клиента равнозначно отказу сервера в коннекте
← →
Sunny Way (2004-05-27 16:22) [4]Правильно ли я понимаю, что средствами компонент delphi этого сделать вообще нельзя (Если делать указанным выше способом, TServerSocket почему-то все равно работает со вторым сокетом - получает сообщения и т.д., то считает его открытым)? Я обязательно разберусь с winsock, но несколько позже :), сейчас быстро не получилось.
← →
Verg © (2004-05-27 19:06) [5]
procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
if ServerSocket1.Socket.ActiveConnections > MAX_CLIENTS then
Socket.Close;
end;
И никаких MessageBox !
← →
able © (2004-05-27 19:35) [6]
> И никаких MessageBox !
они и не нужны!
← →
able © (2004-05-27 19:35) [7]
> И никаких MessageBox !
они и не нужны!
← →
Sunny Way (2004-05-28 17:20) [8]Спасибо большое, если делать close на OnAccept, работает вроде.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c