Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2007, 19:11   #1
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию idHTTP и ошибка Connection reset by peer.

INDY 10.5.1 (Delphi6 sp3)

Есть цикл;

try
s:=IdHTTP.Get(Link);
except
on E: Exception do
begin
...Lines.Add(E.Message);
....?....
end;
end;

При отключении интернета (сети) во время работы программы выпадается ошибка:

Socket Error # 10054
Connection reset by peer.

При подключении сети, ошибка та же, ничего не считывается.


При запуске программы без сети ошибка
Socket Error # 10054,
а
Connection reset by peer. отсутствует

Как разглючить idHTTP, что-то надо написать где знак вопрос?
tebeen вне форума Ответить с цитированием
Старый 11.10.2007, 10:37   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

http.CheckForDisconnect
CheckForGracefulDisconnect
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 11.10.2007, 16:41   #3
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию

http.CheckForDisconnect - нет такого в idHTTP.
CheckForGracefulDisconnect - это Определяет, разъединил ли пэр изящно.(promt)

Пока GET не используется, пишет "Not Connected", раз считал, уже ничего не пишет.

Другие, кто использует GET, у Вас при переподключении интернета, тоже программа заглючивается, или Вам пофигу. )
tebeen вне форума Ответить с цитированием
Старый 11.10.2007, 17:00   #4
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию

Опять сам задаю, сам отвечаю.


Ошибку Connection reset by peer убирает процедура IdHTTP.Disconnect;

Значит, если вместо знака вопроса в программе вставить вот это, всё нормально
продолжает работать.

try
IdHTTP.Disconnect;
except
end;

или так, чтобы выполнить IdHTTP.Disconnect один раз.

try
if pos('Connection reset by peer',E.Message)>0 then IdHTTP.Disconnect;
except
end;

Последний раз редактировалось tebeen; 11.10.2007 в 17:18.
tebeen вне форума Ответить с цитированием
Старый 22.01.2010, 15:38   #5
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

А как это в idIRC лечится?
Прост такая же проблема.

Код:
try
IdHTTP.Disconnect;   //Ну т.е. idIRC1.Disconnect; 
except
end;
Не помогает.
Вобщем если инет обрывается (визически XD), то вылетает такая лшибка, затем инет появляется, но при попытки подключиться (или послать любую команду серву) повторно вылазиет это-же окно и ничего не происходит.

Последний раз редактировалось ZBEP; 22.01.2010 в 18:55.
ZBEP вне форума Ответить с цитированием
Старый 23.01.2010, 20:43   #6
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

Люди я конечно понимаю, что это наверно слишком глупый вопрос и т.д. но я не могу понять, как решить эту проблему!
Кто знает направьте в нужном направлении хотя бы!
ZBEP вне форума Ответить с цитированием
Старый 19.12.2011, 10:25   #7
Baal80
 
Регистрация: 23.04.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от tebeen Посмотреть сообщение
INDY 10.5.1 (Delphi6 sp3)

Есть цикл;

try
s:=IdHTTP.Get(Link);
except
on E: Exception do
begin
...Lines.Add(E.Message);
....?....
end;
end;

При отключении интернета (сети) во время работы программы выпадается ошибка:

Socket Error # 10054
Connection reset by peer.

При подключении сети, ошибка та же, ничего не считывается.


При запуске программы без сети ошибка
Socket Error # 10054,
а
Connection reset by peer. отсутствует

Как разглючить idHTTP, что-то надо написать где знак вопрос?
Смотрю на дату последнего поста - я вовремя Но может кому пригодится. Надо так:
try
s:=IdHTTP.Get(Link);
except on EIdException do
begin
Lines.Add('Error каккой-то там....');
end;
end;

Последний раз редактировалось Baal80; 19.12.2011 в 10:33.
Baal80 вне форума Ответить с цитированием
Старый 19.12.2011, 17:46   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Но может кому пригодится. Надо так:
ваш код, лишь более жестко специализирует исключение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.01.2012, 10:44   #9
Baal80
 
Регистрация: 23.04.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ваш код, лишь более жестко специализирует исключение.
И это тоже. Но просто try...finally или try...except НЕ ЛОВЯТ исключения компонентов Indy. Во всяком случае в Delphi 7. Сам когда-то столкнулся с этим.
Цитата:
Сообщение от ZBEP Посмотреть сообщение
А как это в idIRC лечится?
Прост такая же проблема.

Код:
try
IdHTTP.Disconnect;   //Ну т.е. idIRC1.Disconnect; 
except
end;
Не помогает.
Вобщем если инет обрывается (визически XD), то вылетает такая лшибка, затем инет появляется, но при попытки подключиться (или послать любую команду серву) повторно вылазиет это-же окно и ничего не происходит.
У ZBEP такая-же проблема. Ну не канают простые try...finally и try...except. Не ловится исключение. Поэтому, если нужно обработать Indy-исключение, то его надо указать явно. Вот более точный пример:

Код:
uses IdException;
....
try
 s:=IdHTTP.Get(Link);
except on E.EIdException do
begin
 Lines.Add(E.message);
end;
end;
Baal80 вне форума Ответить с цитированием
Старый 22.01.2012, 11:04   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
И это тоже. Но просто try...finally или try...except НЕ ЛОВЯТ исключения компонентов Indy. Во всяком случае в Delphi 7. Сам когда-то столкнулся с этим.
все они ловят, просто при отладке Делфи стопориться на любом исключения(ну кроме стандартных)
жмем Continue/Run(в зависимости от версии), и переходим к обработчику.

а раньше в Инди был прикол что либа сама показывала сообщение об ошибке, в наглую.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SocketError 10061. Connection refused Lanist Работа с сетью в Delphi 11 17.07.2008 14:47
idHTTP DeDoK Общие вопросы Delphi 5 05.06.2008 22:45
Connection timed out при вызове IdSMTP1.Connect(10000); dimon000 Работа с сетью в Delphi 3 11.01.2008 22:49
Connection timed out - что это? илья too Работа с сетью в Delphi 4 25.08.2007 19:07