Главная страница
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.48 MB
Время: 0.046 c
3-1130963421
SergP.
2005-11-02 23:30
2005.12.18
Как можно узнать версию установленного провайдера


1-1132569064
DN
2005-11-21 13:31
2005.12.18
В TWebBrowser загружаю страницу, как после окончания загрузки зап


6-1125911198
Тыковка
2005-09-05 13:06
2005.12.18
Как пинговать и ущнать


14-1133248465
dr D
2005-11-29 10:14
2005.12.18
Что-то вы тут завели: политика, политика ...


4-1129706286
Idx
2005-10-19 11:18
2005.12.18
Как компонент сделать прозрачным?