Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.306 c
9-1081803894
Werwolf
2004-04-13 01:04
2004.07.25
Люди кто знает .................


4-1082826122
OSokin
2004-04-24 21:02
2004.07.25
JournalRecord


14-1089275950
inic
2004-07-08 12:39
2004.07.25
Об EGGах


3-1088758251
Pipl
2004-07-02 12:50
2004.07.25
Забавный формат даты в базе Access


1-1089277275
Vitalik
2004-07-08 13:01
2004.07.25
создание экземпляров класса по его наименованию.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский