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

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

Connect в TClientSocket


snake1977 ©   (2003-07-29 09:12:00) 

Здравствуйте! Подскажите пожалуйста, я использую TClientSocket и TServerSocket. Вот кусок исходника:

Var ClientConnected:Boolean;

....
ClientConnected:=False;
Client1.Active:=True;
if Client1.Active Then ClientConnected:=True;
....

Проблема в том что условие никогда не выполняется, т.е. выполняется но со временем, т.е. приходится использовать что то типа While not Client1.Active do Application.ProcessMessages;
но тогда происходит зависание, если серверный сокет не активен.

Как проверить что клиент приконнектился к серверу?


Polevi   (2003-07-30 15:17:00) [1]

Basilio © (29.07.03 19:11)
плохой код


Basilio   (2003-07-29 19:11:00) [2]

Может прокатить такой код:
Client1.Active:=true;
while not Client1.Connected do Application.ProcessMessages;

> клиенту нужно время, чтобы сконнектится


Verg   (2003-07-29 13:15:00) [3]


> Как проверить что клиент приконнектился к серверу?


В режиме по умолчанию используется nonBklocking или аснхронный режим работы с TClientSocket. Таким образом, Client1.Active:=True; только инициирует процесс соединения. А результат соединения получаешь обрабаотывая события OnError, OnWrite, OnDisconnect. Только после получения события OnWrite можно считать соединение состоявшимся.


Digitman   (2003-07-29 09:21:00) [4]


> но тогда происходит зависание


какое такое "зависание" ?)

"зависание" ты получишь , если


Client1.Active:=False;
Client1.ClientType := ctBlocking;
Client1.Active:=True; // вот здесь и "повиснешь" до тех пор, пока не будет установлен коннект либо в нем тебе будет отказано


Наверх

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