Главная страница
    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.008 c
3-58571
Dynamit
2003-08-27 11:48
2003.09.18
Очень быстро заканчивается память!!!!


1-58760
Андрей Сенченко
2003-09-08 14:37
2003.09.18
Вдруг кто уже сталкивался


6-58809
ALaKO
2003-07-17 11:43
2003.09.18
опять Tembeddewb


7-58954
Volodymyr
2003-06-18 20:14
2003.09.18
com-порт... :)


14-58848
Непомню
2003-08-31 04:57
2003.09.18
SynEdit





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