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

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

Клиент не отключается!!!


аыпвапы ©   (2007-04-23 10:54:00) 

есть сервер и клиент.
работает по принципу подключился клиент сервер ему сразу ответ а клиент как получает данные отключается.
ок. все работает.
начинаю тестить закрываю запускаю сервер. тость зупустил прогу, вуключил, запустил, выключил ......
в один прекрасный момент у клиента не происходит отключение тоесть даже такое не помогает:
while(ClientSocket1.Active)do
 ClientSocket1.Close;

стоит актив ивсё (((

P.S. в событии ClientSocket1Error ставлю Abort что бы ерроры не вылазили.


  (2007-09-19 10:11:00) [1]

Удалено модератором
Примечание: сорри за закрытую изза этого спама ветку. если  вопрос еще актуален перезадайте.


  (2007-09-17 22:47:00) [2]

Удалено модератором


ient   (2007-09-12 10:09:00) [3]

>ClientSocket1Error
>abort

errorcode := 0;
socket.close;

>while(ClientSocket1.Active)do
>  ClientSocket1.Close;

ClientSocket1.close;


  (2007-09-10 21:44:00) [4]

Удалено модератором


Сергей М.   (2007-04-24 12:43:00) [5]


> цикл while будет выполнятся до тех пор пока свойство Active
> не станет равным false


Оно и не станет False, если ClientType = ctNonBlocking и в теле цикла нет обработки Win-сообщений.

Сдесь есть два варианта - либо ClientType должен быть равен ctBlocking, либо после Active = False в тело цикла добавить строчку Application.Processmessages.

Но цикл этот сам по себе бестолков, потому как отключение на самом деле заведомопроисходит (убедись сам на тестовом приложении, использующем событие OnClientDisconnect компонента TServerSocket).
А раз он бестолков, то и организовывать его ради проверки Active = False нет никакого смысла.


аыпвапы   (2007-04-24 12:29:00) [6]


> в один прекрасный момент у клиента не происходит отключение
> тоесть даже такое не помогает:
> while(ClientSocket1.Active)do
>  ClientSocket1.Close;
> стоит актив ивсё (((

это кусок вопроса заданый мною в самом начале.

Уважаемый Сергей приношу свои глубочайшие извенения что не рассказал очень трудного для понимания кода.
рассказываю:
цикл while будет выполнятся до тех пор пока свойство Active не станет равным false, что в свою очередь будет соотвецтвовать отключению от сервера. а а тело цикла содержит единственную команду ClientSocket1.Close котороя выполняет отключение, но в моем случае (Сергей напоминаю что это инногда возникает) отключение не происходит и цикл начинает бесконечно выполнятся.

Сергей польше программного кода у меня нет остальное написанно словами. может у тебя еще какие вопросы? не стесняйся спрашивай я срадостью постраюсь уточнить все моменты.


Сергей М.   (2007-04-24 08:48:00) [7]


> эти действия не приносят никакого результата


А у меня приносят. Контрвопрос - что я не так делаю ?)


> на мой ответ я получаю не тот ответ


Каков ответ - таков и ответ)

Ты же не спросил, почему, мол, Active остается True, если я только что установил его в False)


аыпвапы   (2007-04-24 08:42:00) [8]

ну конечно извените меня, но я вроде написал в самом начале что возникает такая ситуация когда эти действия не приносят никакого результата. я же неспрашиваю как это сделать. я говорю что я это делаю,но это не работает.

на мой ответ я получаю не тот ответ.


Сергей М.   (2007-04-24 08:04:00) [9]


> я же говорю что это не помогает


А как это, по-твоему, должно помочь ? И кому помочь ?

Я же говорю - для отключения клиента достаточноустановить ClientSocket.Active := False или вызвать метод ClientSocket.Close.


аыпвапы   (2007-04-24 07:11:00) [10]


> Для отключения клиента достаточно установить ClientSocket.
> Active := False или вызвать метод ClientSocket.Close


я же говорю что это не помогает.
я спрашиваю почему? и как это исправить?


Сергей М.   (2007-04-23 11:01:00) [11]

Для отключения клиента достаточно установить ClientSocket.Active := False или вызвать метод ClientSocket.Close


Наверх

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