Главная страница
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.041 c
14-1132670460
passlight
2005-11-22 17:41
2005.12.18
Нашли стрелочника...


14-1133020939
Cerberus
2005-11-26 19:02
2005.12.18
Подскажите текстовый редактор.


6-1124823636
Korvet
2005-08-23 23:00
2005.12.18
Подключение к сети


14-1132988205
Snap
2005-11-26 09:56
2005.12.18
Ненужная утилита


14-1133078119
ArtemESC
2005-11-27 10:55
2005.12.18
Обработчик прерываний