Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

Как правильно отсоединить клиента?   Найти похожие ветки 

 
Akni   (2003-07-14 17:54) [0]

Подскажите, пожалуйста, как правильно реализовать сабж?
По условию задачи только один клиент может одновременно быть подключен к серверу, т.е. при попытке подсоедниния клиента нужно проверять, или есть уже подключенные. И если да, то отсоединять очередного «желающего».

Попытка отключить описанным ниже образом нужных результатов не дает.

TISServerThread: TThread;
fServerSocket: TserverSocket;
...
fServerSocket.OnClientConnect := SocketClientConnect;
....

procedure TISServerThread.SocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if fServerSocket.Socket.ActiveConnections>1 then
begin
Socket.Close;
Exit;
end;
...
end;


 
Spawn   (2003-07-15 07:16) [1]

так поставь на
procedure TISServerThread.SocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);


 
Digitman   (2003-07-15 08:10) [2]


> нужных результатов не дает


это почему же ? Socket.Close как раз и делает то, что тебе нужно !


 
Snap   (2003-07-15 13:47) [3]

Может это что то не то, но кажется в сокетах есть свойство MaxConnections. Или нету... просто нету щас дельфи под рукой, не могу сам посмотреть. А так просто устанавливаеш его в 0 и больше ничего не надо.


 
Digitman   (2003-07-15 13:53) [4]


> Snap


TServerSocket не имеет такого свойства.


 
Akni   (2003-07-16 13:14) [5]


> Socket.Close как раз и делает то, что тебе нужно


Да, тут я поспешила с выводами. Тогда другой вопрос:
при таком отключения клиента происходит след.:
1. возникает событие OnClientDisconnect (ActiveConnections=2)
2. возникает событие OnAccept (ActiveConnections=2)

Вопрос: почему возникает OnAccept, ведь клиента-то уже отключили?


 
Digitman   (2003-07-16 13:30) [6]


> почему возникает OnAccept, ведь клиента-то уже отключили?


быть того не может !
вероятно, клиент у тебя при обнаружении дисконнекта по инициативе сервера тут же автоматически запрашивает повторный коннект.

то что в обработчике OnAccept() ты видишь ActiveConnections=2, вполне нормально и лишний раз подтверждает это



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-58711
Vitalygavrilov
2003-09-08 09:40
2003.09.18
Ввести по клику новые данные в Combobox


3-58522
asd
2003-08-27 18:55
2003.09.18
Вставка записей в таблицу InterBase


3-58518
Relaxxx
2003-08-28 14:59
2003.09.18
!!!!!!!!!Тупая ошибка, Оракл не пашет с компонентом Table


6-58826
Филипп
2003-07-18 09:52
2003.09.18
База данных ACCESS через Интернет


4-58966
mrcat
2003-07-09 15:17
2003.09.18
AddFontMemResourceEx





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский