| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > idTCPClient |
| Автор: Unregistered 21.5.2004, 03:02 |
| Здравствуйте. Использую сетевые компоненты 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 22.5.2004, 17:41 | ||||||||
| Я понял что у тебя творится! проверь событие OnDisconnect (на всякий случай, может там стоит SHowmessage У меня тоже была такая же ошибка, когда я работал с TCP Проверь все события считывания и отправки информации ... Может че упустил ... Ниже текст, может он тебе пригодится ... Можно исключить твою ошибку с помощью обработки классов исключительных ситуаций ... Я об этом сообщу попозже (надо все проверить), но обязательно сообщу! заглядывай время от времени в свою тему ... Может даже сегодня ... И лучше пользуйся, если тебе не надо выводить сообщений об ошибке:
Это отрывок из моего ЧАТА - Я использую немного другую технологию:
Подключение/отключение на кнопке (если захочется вручную откл\вкл)
Вот так идет прием информации:
В этой системе никаких ошибок не возникает, а если что-нибудь происходит, то об ошибке пишется в никому не мешающем StatusBar. Вот собственно и все, может тебе поможет ... Если че спрашивай ... |
| Автор: SkilFul 22.5.2004, 18:17 | ||
| Исключительными ситуации: EAbort - Данный класс предназначен для формирования и обработки "невидимых" для пользователя ошибок и используется разработчиками для управления ходом выполнения программы. Диалоговое окно с сообщением об ошибке не показывается. EAbstractError - попытка выполнения абстрактного метода. EAssertionFailed - значение процедуры Assert равно false. EExternal - Неверное функционирование системы Windows. EExternalException - невозможность распознать исключительную ситуацию средствами Deplhi 7. EInvalidPointer - неверная операция при работе с указателями. EMathError - Базовый класс, на основе которого сделаны классы исключительных ситуаций при работе с числами с плавающей запятой. EWin32Error - ошибка 32-разрядной версии Windows. Вот проверь - подставь эти классы исключительных ситуаций. Если че не пойдет, напиши, может еще чем нибудь помогу ... пример использования:
|
| Автор: Unregistered 24.5.2004, 02:32 |
| SkilFul Спасибо. Нет, showmessage-а нету Да я уже исправил все. writeln как-то между глаз попал |