Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1

IdTCPClient не возникает событие Disconnecting

21.12.2015, 19:03. Показов 2062. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сервер выключается, делает дисконект или пропадает сетевое соединение а IdTCPClient никак не сигнализирует об этом.
В чем беда ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void __fastcall TMainForm::IdTCPClient1Status(TObject *ASender, const TIdStatus AStatus,
          const UnicodeString AStatusText)
{
    UnicodeString result = "On Status: ";
 
    switch(AStatus)
    {
        case hsResolving:
        result = result + "hsResolving";
        break;
 
        case hsConnecting:
        result = result + "hsConnecting";
        break;
 
        case hsConnected:
        result = result + "hsConnected";
        break;
 
        case hsDisconnecting:
        result = result + "hsDisconnecting";
        break;
 
        case hsStatusText:
        result = result + "hsStatusText";
        break;
 
        case ftpTransfer:
        result = result + "ftpTransfer";
        break;
 
        case ftpReady:
        result = result + "ftpReady";
        break;
 
        case ftpAborted:
        result = result + "ftpAborted";
        break;
    }
 
    Memo1->Lines->Add(result);
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2015, 19:03
Ответы с готовыми решениями:

Событие возникает дважды
Здравствуйте. Такая ситуация: есть два лукапа(lue1, lue2), на каждый написан обработчик EditValueChanged настроены они на разные поля...

Какое событие возникает при...
Какое событие возникает при нажатие мышкой на ScrollBarе StringGrida. когда нажимаем на кнопки со стрелками или двигаем ползунок?

По разному возникает событие OnMouseUp
В 2х разных проектах динамически создаю компонент Edit1. И пишу к ним код для события OnMouseUp. Далее нажимаю кнопку мыши на Edit-е (не...

7
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
21.12.2015, 22:33
Может ЭТО Вам поможет
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
22.12.2015, 06:18  [ТС]
Ничего не понял из той темы, просвети пожалуйста
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
22.12.2015, 08:13
Лучший ответ Сообщение было отмечено demmax2004 как решение

Решение

Как я понял Вы используете Indy компоненты, они в свою очередь не предназначены для длительных соединений, то есть:
1)Клиент подключился (во время подключения отправил пакет)
2)Сервер присоединил клиент, отработал запрос и сразу же его отключил (он не весит и не ждет что клиент еще что то отправит,а сразу рубит его).
3)Клиент снова ждет когда его подключат.

То есть клиент ни как не может узнать во время простоя что там сервером,есть ли к нему соединение. Вы можете только через определены интервалы пинговать сервер на работоспособность.

Это если я Вас правильно понял.
1
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
22.12.2015, 08:21  [ТС]
Спасибо за разъяснение.

Нашел TClientSocket в студии, разработчики зачем то его вообще отключили после определенной версии студии.
Пришлось вручную включать.

Эта штука меня больше устраивает.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
22.12.2015, 08:24
Цитата Сообщение от demmax2004 Посмотреть сообщение
разработчики зачем то его вообще отключили после определенной версии студии.
Типа морально устарело. На сам деле пока другой альтернативы обычным сокетам в рад студио нет.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.12.2015, 15:23
Цитата Сообщение от Dinkin Посмотреть сообщение
То есть клиент ни как не может узнать во время простоя что там сервером,есть ли к нему соединение. Вы можете только через определены интервалы пинговать сервер на работоспособность.
Обычно передается периодически нечто вроде команды NOOP которая говорит серверу нечто вроде "я здесь" не рубай соединение со мной, по которой можно понять о состоянии соединения. Дело в том что в добавок если долго не слать сообщения то сервер через какое-то время рубает, что бы не простаивало соединение без дела.
И это не является особенностью Indy.

Цитата Сообщение от Dinkin Посмотреть сообщение
Типа морально устарело. На сам деле пока другой альтернативы обычным сокетам в рад студио нет.
boost/asio
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
22.12.2015, 17:40
Цитата Сообщение от Avazart Посмотреть сообщение
boost/asio
об этом не знал

Добавлено через 2 часа 15 минут
Цитата Сообщение от Avazart Посмотреть сообщение
Дело в том что в добавок если долго не слать сообщения то сервер через какое-то время рубает, что бы не простаивало соединение без дела.
И это не является особенностью Indy.
Кстати да , сталкивался на обычных сокетах, если соединение простаивает ~>5 мин, то пакеты перестают доходить в оба направления (при этом статус клиента как активен)...решалось это путем периодичных оправок эхо пакетов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2015, 17:40
Помогаю со студенческими работами здесь

Не возникает MouseLeftButtonDown событие в ListBox
Добрый день, есть листбокс и ObservableCollection Persons <ListBox ItemsSource="{Binding Persons}"...

Когда возникает событие OnCreate Главной формы?
Я думал что при создании формы, а если это главная форма, то непосредственно при запуске программы (т.е. когда сразу появляется главная...

При всех ли исключениях возникает событие OnException
Application.OnException перехватывает все исключения? например, есть Application.OnException := DoException; procedure...

Какое событие возникает при выборе элемента в ListBox
извините за тупой вопрос, но как называется эвент для листбокса, срабатывающий при выборе итема в нем? уже минут 20 втыкаю, уже до...

Какое событие возникает при отпускании кнопки мыши?
Какое событие возникает при отпускании кнопки мыши? mouseunpress unpress mouseup mouserelease mouseloose К каким из этих тегов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru