Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
4-1129604342
Idx
2005-10-18 06:59
2005.12.18
Как добавить "LVS_..." style для ListView?


14-1133134636
Strech
2005-11-28 02:37
2005.12.18
Восстановление удаленного файла


2-1133242679
Andry
2005-11-29 08:37
2005.12.18
Экранная клавиатура


10-1109556397
msgipss
2005-02-28 05:06
2005.12.18
Создание надстройки над Excell


14-1132921459
Pazitron_Brain
2005-11-25 15:24
2005.12.18
А можно так сделать?




   Наверх