![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Unregistered |
|
|||
|
Unregistered |
Здравствуйте. Использую сетевые компоненты idTCpServer и idTCPClient. По сети изредка возникают затыки и у клиента выскакивает сообщение о разрыве связи (Connection reset by peer). Через некоторое время связь восстанавливается и программа продолжает работать, но сообщение это естественно мозолит глаз пока не квитируешь. Положение ухудшается тем, что программа должна работать круглосуточно и таких сообщений может выпадать довольно много (что, собственно, и происходит). Установка большого (10 минут) таймаута на чтение не помогает (разрыв фиксируется раньше). Использование try... except... тоже не помогает, вот код который я использую:
.......... With tcpclient do begin if not connected then try connect; except end; if connected then begin WriteLn('REQUEST DATA'); try //таймаут на чтение ловиться нормально CurrString:=CurrentReadBuffer; except CurrString:=''; end; ............ Как обработать исключение на разрыв соединения? |
|||
|
||||
| SkilFul |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 12.5.2004 Репутация: нет Всего: 1 |
Я понял что у тебя творится! проверь событие OnDisconnect (на всякий случай, может там стоит SHowmessage
У меня тоже была такая же ошибка, когда я работал с TCP Проверь все события считывания и отправки информации ... Может че упустил ... Ниже текст, может он тебе пригодится ... Можно исключить твою ошибку с помощью обработки классов исключительных ситуаций ... Я об этом сообщу попозже (надо все проверить), но обязательно сообщу! заглядывай время от времени в свою тему ... Может даже сегодня ... И лучше пользуйся, если тебе не надо выводить сообщений об ошибке:
Это отрывок из моего ЧАТА - Я использую немного другую технологию:
Подключение/отключение на кнопке (если захочется вручную откл\вкл)
Вот так идет прием информации:
В этой системе никаких ошибок не возникает, а если что-нибудь происходит, то об ошибке пишется в никому не мешающем StatusBar. Вот собственно и все, может тебе поможет ... Если че спрашивай ... |
||||||||
|
|||||||||
| SkilFul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 12.5.2004 Репутация: нет Всего: 1 |
Исключительными ситуации:
EAbort - Данный класс предназначен для формирования и обработки "невидимых" для пользователя ошибок и используется разработчиками для управления ходом выполнения программы. Диалоговое окно с сообщением об ошибке не показывается. EAbstractError - попытка выполнения абстрактного метода. EAssertionFailed - значение процедуры Assert равно false. EExternal - Неверное функционирование системы Windows. EExternalException - невозможность распознать исключительную ситуацию средствами Deplhi 7. EInvalidPointer - неверная операция при работе с указателями. EMathError - Базовый класс, на основе которого сделаны классы исключительных ситуаций при работе с числами с плавающей запятой. EWin32Error - ошибка 32-разрядной версии Windows. Вот проверь - подставь эти классы исключительных ситуаций. Если че не пойдет, напиши, может еще чем нибудь помогу ... пример использования:
|
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
SkilFul
Спасибо. Нет, showmessage-а нету Да я уже исправил все. writeln как-то между глаз попал |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |