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

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

21.12.2015, 19:03. Показов 2018. Ответов 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru