Форум: "Сети";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизTIdTCPServer & 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.015 c