Форум: "Сети";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизКлиент не отключается!!! Найти похожие ветки
← →
аыпвапы (2007-04-23 10:54) [0]есть сервер и клиент.
работает по принципу подключился клиент сервер ему сразу ответ а клиент как получает данные отключается.
ок. все работает.
начинаю тестить закрываю запускаю сервер. тость зупустил прогу, вуключил, запустил, выключил ......
в один прекрасный момент у клиента не происходит отключение тоесть даже такое не помогает:
while(ClientSocket1.Active)do
ClientSocket1.Close;
стоит актив ивсё (((
P.S. в событии ClientSocket1Error ставлю Abort что бы ерроры не вылазили.
← →
Сергей М. © (2007-04-23 11:01) [1]Для отключения клиента достаточно установить ClientSocket.Active := False или вызвать метод ClientSocket.Close
← →
аыпвапы (2007-04-24 07:11) [2]
> Для отключения клиента достаточно установить ClientSocket.
> Active := False или вызвать метод ClientSocket.Close
я же говорю что это не помогает.
я спрашиваю почему? и как это исправить?
← →
Сергей М. © (2007-04-24 08:04) [3]
> я же говорю что это не помогает
А как это, по-твоему, должно помочь ? И кому помочь ?
Я же говорю - для отключения клиента достаточно установить ClientSocket.Active := False или вызвать метод ClientSocket.Close.
← →
аыпвапы (2007-04-24 08:42) [4]ну конечно извените меня, но я вроде написал в самом начале что возникает такая ситуация когда эти действия не приносят никакого результата. я же неспрашиваю как это сделать. я говорю что я это делаю,но это не работает.
на мой ответ я получаю не тот ответ.
← →
Сергей М. © (2007-04-24 08:48) [5]
> эти действия не приносят никакого результата
А у меня приносят. Контрвопрос - что я не так делаю ?)
> на мой ответ я получаю не тот ответ
Каков ответ - таков и ответ)
Ты же не спросил, почему, мол, Active остается True, если я только что установил его в False)
← →
аыпвапы (2007-04-24 12:29) [6]
> в один прекрасный момент у клиента не происходит отключение
> тоесть даже такое не помогает:
> while(ClientSocket1.Active)do
> ClientSocket1.Close;
> стоит актив ивсё (((
это кусок вопроса заданый мною в самом начале.
Уважаемый Сергей приношу свои глубочайшие извенения что не рассказал очень трудного для понимания кода.
рассказываю:
цикл while будет выполнятся до тех пор пока свойство Active не станет равным false, что в свою очередь будет соотвецтвовать отключению от сервера. а а тело цикла содержит единственную команду ClientSocket1.Close котороя выполняет отключение, но в моем случае (Сергей напоминаю что это инногда возникает) отключение не происходит и цикл начинает бесконечно выполнятся.
Сергей польше программного кода у меня нет остальное написанно словами. может у тебя еще какие вопросы? не стесняйся спрашивай я срадостью постраюсь уточнить все моменты.
← →
Сергей М. © (2007-04-24 12:43) [7]
> цикл while будет выполнятся до тех пор пока свойство Active
> не станет равным false
Оно и не станет False, если ClientType = ctNonBlocking и в теле цикла нет обработки Win-сообщений.
Сдесь есть два варианта - либо ClientType должен быть равен ctBlocking, либо после Active = False в тело цикла добавить строчку Application.Processmessages.
Но цикл этот сам по себе бестолков, потому как отключение на самом деле заведомо происходит (убедись сам на тестовом приложении, использующем событие OnClientDisconnect компонента TServerSocket).
А раз он бестолков, то и организовывать его ради проверки Active = False нет никакого смысла.
← →
имя (2007-09-10 21:44) [8]Удалено модератором
← →
ient (2007-09-12 10:09) [9]>ClientSocket1Error
>abort
errorcode := 0;
socket.close;
>while(ClientSocket1.Active)do
> ClientSocket1.Close;
ClientSocket1.close;
← →
имя (2007-09-17 22:47) [10]Удалено модератором
← →
имя (2007-09-19 10:11) [11]Удалено модератором
Примечание: сорри за закрытую изза этого спама ветку. если вопрос еще актуален перезадайте.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c