Форум: "Сети";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
ВнизConnect в TClientSocket Найти похожие ветки
← →
snake1977 (2003-07-29 09:12) [0]Здравствуйте! Подскажите пожалуйста, я использую TClientSocket и TServerSocket. Вот кусок исходника:
Var ClientConnected:Boolean;
....
ClientConnected:=False;
Client1.Active:=True;
if Client1.Active Then ClientConnected:=True;
....
Проблема в том что условие никогда не выполняется, т.е. выполняется но со временем, т.е. приходится использовать что то типа While not Client1.Active do Application.ProcessMessages;
но тогда происходит зависание, если серверный сокет не активен.
Как проверить что клиент приконнектился к серверу?
← →
Digitman (2003-07-29 09:21) [1]
> но тогда происходит зависание
какое такое "зависание" ?)
"зависание" ты получишь , если
Client1.Active:=False;
Client1.ClientType := ctBlocking;
Client1.Active:=True; // вот здесь и "повиснешь" до тех пор, пока не будет установлен коннект либо в нем тебе будет отказано
← →
Verg (2003-07-29 13:15) [2]
> Как проверить что клиент приконнектился к серверу?
В режиме по умолчанию используется nonBklocking или аснхронный режим работы с TClientSocket. Таким образом, Client1.Active:=True; только инициирует процесс соединения. А результат соединения получаешь обрабаотывая события OnError, OnWrite, OnDisconnect. Только после получения события OnWrite можно считать соединение состоявшимся.
← →
Basilio (2003-07-29 19:11) [3]Может прокатить такой код:
Client1.Active:=true;
while not Client1.Connected do Application.ProcessMessages;
> клиенту нужно время, чтобы сконнектится
← →
Polevi (2003-07-30 15:17) [4]Basilio © (29.07.03 19:11)
плохой код
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c