Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

TIdTCPServer &amp; TIdTCPClient <OnDisconnect>   Найти похожие ветки 

 
ДимДимыч   (2005-09-05 15:25) [0]

Возник вопросик: почему не происходит событие OnDisconnect. Код на сервере :

procedure TfrmMain.SrvDisconnect(AThread: TIdPeerThread);
var
 Client: TSimpleClient;
 li: TListItem;
begin
 showmessage(",sdfbvjsdfbsndj");
 Client:=TSimpleClient(AThread.Data);
 li:=TListItem(Client.ListItem);
 li.Destroy;
 LogAdd(002,"Client at "+Client.IP+" disconnect",3);
 Client.Destroy;
end;


Код на клиенте :


procedure TForm1.Button2Click(Sender: TObject);
begin
 Cln.Disconnect;
end;


В примерах посмотрел - там событие OnDisconnect на сервере не обрабатывается, но мне нужно дестроить кучу объектов при отключении клиента. Так что обрабатывать его необходимо.
Не могу понять где прокол.


 
Digitman ©   (2005-09-05 15:34) [1]


> Не могу понять где прокол


в TIdTCPServer событие OnDisconnect возникает в ходе исполнения метода PeerThread.Connection.Disconnect

если этот метод не вызван тобой, то и событие не возникнет


 
Eraser ©   (2005-09-05 15:37) [2]

ДимДимыч   (05.09.05 15:25)

Дестрой объекты вконце OnExecute.


 
ДимДимыч   (2005-09-05 15:57) [3]

>Eraser ©   (05.09.05 15:37) [2]
 Может я не правильно выбрал компоненты, но мне необходимо сохранять все объекты в течении всего времени соединения, а это довольно долго, и событие OnExecute будет возникать не один раз.

>Digitman ©   (05.09.05 15:34) [1]
 А как можно сделать, чтобы дисконнект инициировался клиентом?


 
Digitman ©   (2005-09-05 16:07) [4]


> как можно сделать, чтобы дисконнект инициировался клиентом?


он, дисконнект, и инициируется клиентом

но поскольку Инди работает с гнездами в синхронном блокирующем режиме никаких асинхронных нотификаций о событиях транспорта ожидать не следует.

читаем справку, например, к методу ReadLn:

ReadLn will return an empty string ("") if the peer connection is prematurely closed or a time-out occurs

это о чем-то говорит тебе ?


 
ДимДимыч   (2005-09-05 16:56) [5]

Примерно понял. А нет ли в Д7 Чего-нибудь похожего на сокеты из Д5?


 
Digitman ©   (2005-09-05 17:00) [6]

отчего ж нет ?

есть.

как раз те самые что и в Д5 - TClient/Server (для появления их в палитре необходимо установить дизайн-тайм-пакет dclsockets70.bpl из (%DELPHI%)\BIN)


 
ДимДимыч   (2005-09-05 19:11) [7]

>Digitman ©   (05.09.05 17:00) [6]
спасибо



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

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.012 c
1-1132889105
beglec
2005-11-25 06:25
2005.12.18
Как загрузить банер в программу?


2-1133356102
Den47
2005-11-30 16:08
2005.12.18
Как работать с DBF


2-1133183927
kblc
2005-11-28 16:18
2005.12.18
TComboBox


2-1133172693
Dilman
2005-11-28 13:11
2005.12.18
Пример работы с DLL


2-1133767191
Nemiroff
2005-12-05 10:19
2005.12.18
Позиция окна при разворачивании





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