Тема: Перевірка на підключення до інтернету

Ото ж, треба в одній програмульці час від від часу перевіряти наявність підключення до інтернету.
Вирішив заюзати найпростіший спосіб, використовуючи IdHTTP

function CheckConnectToNet( IdHTTP1 : TIdHTTP ) : Bool;
begin
    Try
      IdHTTP1.Get('http://173.194.39.135/');
      CheckConnectToNet := True;
    Except
      CheckConnectToNet := False;
    end;
end;

власне зробив таке, багато не тестив, але сходу ніби працювало.
А зараз, коли програма трішки розрослася і з`явилися частини, які без підключення до нету - працювати не будуть - програма почала плюватися помилками. Я довго тестив, і зрозумів, що проблема якраз у перевірці підключення до нету. Функція працює, але не завжди коректно.
Виявити дуже просто: робимо нову програму , яка по натисненні на кнопку, перевіряє, що повертає функція і видає відповідне повідомлення

if CheckConnectToNet(IdHTTP1) then
ShowMessage('ok')
else
ShowMessage('ne ok');

Запустимо програму. До інтернету ми підключені, натискаємо на кнопку, нам видає повідомлення: "ок", чудово, спробуємо відключити інтернет(програму не закриваємо). Витягуємо просто кабель з компа(так швидше), натискаємо знову кнопку. І тут все ок, нам видає повідомлення: "ne ok". Ну ніби все паше, але...
Під`єднуємо кабель назад, у нас з`являється з`єднання з інтернетом. Знову ж таки клацаємо на нашу пімпочку, і бачимо повідомлення: "ne ok", яке говорить про те, що функція повернула false при тому, що з`єднання є.
От в тому полягає уся проблема. Як можна це виправити ?

2

Re: Перевірка на підключення до інтернету

Гета не треба, пінга достатньо. Скоріш за все вам потрібно створити новий сокет чи "скинути" компоненту.

3

Re: Перевірка на підключення до інтернету

Ваша функція отримує IdHTTP1 звідкілясь іще, в якомусь стані. А нащо? Створюйте власний, новий, і знищуйте. Ну, або чистіть перед роботою.

Re: Перевірка на підключення до інтернету

koala написав:

Створюйте власний, новий, і знищуйте.

Так і зробив. Все працює. Дякую.

Подякували: koala1