![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос по TIdTcpServer [WinXP]
po4ti novi4ok © (2006-06-25 13:14:00)есть сервер и клиент, с клиентом вроде разобрался, а вот с сервером возникла одна небольшая загвоздка...
При старте приложения сервер автоматически запускается, и если в течении одной секунды никто не приконнектится, то нужно задать определенные параметры... проблема состоит в том как узнать что к серверу никто не приконнектился? может у этого сервера есть там свойство какое-то, я его просто проглядел, подскажите пожалуйста как эту проблему решить...
использую Indy10...
medved_68 (2006-06-28 10:59:00) [1]
> Как ты ловишь OnConnect, не подскажешь?
procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPServer1.Active:=True;
i:=0;
end;
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
i:=i+1;
end;
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
if i>0 then i:=i-1;
end;
Ну а далее все и так ясно :)
Deka (2006-06-28 10:12:00) [2]Сделать флаг. Установить (сбросить его). Завести таймер на нужное время. При коннекте поменять сбросить (установить) флаг. При срабатывании таймера проверить флаг и сделать необходимое.
po4ti novi4ok (2006-06-27 11:09:00) [3]т.е., я правильно понял:
TMyClass
Server: TIdTcpServer;
i: boolean;
......
a: TMyClass;
......
a.Server.Active:=true;
a.i:=false;
Как ты ловишь OnConnect, не подскажешь?
qqq111 (2006-06-27 10:58:00) [4]у меня отдельный класс на сервер и .. я туда ставлю еще параметр флаг... устанавливаю в в старте сервера параметр скажем фалзе... далее при возникновении событи онконект просто в нем меняю флаг на тру... и все..
po4ti novi4ok (2006-06-27 10:10:00) [5]не получается ни через события, ни через флаги...
делаю так...
....
Server: TIdTcpServer;
.......
function start: boolean;
begin
i:=0;
....
Server.Active:=true;
sleep(1000);
if i<>1 then begin
//тут я задаю параметры которые нужно выставить если к серверу никто не приконнектился
end;
end;
procedure Server.OnExecute;
begin
i:=1; //поидее это отдельный поток но попадает сюда только когда выполнится f.start
end;
события соответственно также реагируют... может кто-нибудь подскажет как эту проблему решить...
qqq111 (2006-06-26 14:49:00) [6]Через евент... самое простое
po4ti novi4ok (2006-06-26 13:51:00) [7]может кто сталкивался все-таки с этой проблемой, помогите пожалуйста найти решение...