Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вопрос по 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]

может кто сталкивался все-таки с этой проблемой, помогите пожалуйста найти решение...


Наверх

Титульная страница Поиск, карта сайта Написать письмо