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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2011, 13:54   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> если соединение с интернетом существует

Интернет — это сотни разных протоколов.
Может работать хттп, но не работать почта (особенно отсылка по 25 порту). Может ходить пинг, но не работать хттп. Может быть доступ через Socks прокси, о котором знает только админ.

Какой именно протокол вас интересует? Хотите вы знать о подключениях через прокси?

> IdHTTP1.Get( 'http://yandex.ru' );

Плохой способ:

1) У юзера может ходить HTTP только через прокси
2) ДНС может временно лежать
3) Корпоративный прокси может вернуть страницу, типа "чтобы выйти в интернет, нажмите сюда". Никакого исключения при этом не будет.
4) Если выход через Wi-Fi, ситуация может быть аналогичной пункту 3)

Это из очевидных минусов.

Но основной вопрос остаётся прежним: нахрена вам знать, существует ли "соединение с интернетом"? Считайте, что существует и молча делайте своё дело. Если дело не делается, тогда уж попросите юзера "выйти в Интернет", задать параметры HTTP/Socks прокси, whatever.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 30.08.2011, 13:57   #12
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
на любом сайте могут быть сбои
Да мало ли где какие "сбои" ? Как это соотносится с вопросом, поставленным ч.н. "в лоб" - в данный момент есть "подключение к Интернет" или нет его ?)

Ну пусть на каком-то там сайте сбой, ну и что ? Это же вовсе не говорит о том что нет подключения)

Сама постановка вопроса о "подключенности к Интернет", мягко говоря, бессмысленная. Пакет сетевого OSI-уровня дошел до целевого хоста или устройства ? Интернет "подключен". Не дошел ? Не подключен)

Последний раз редактировалось mss; 30.08.2011 в 14:06.
mss вне форума Ответить с цитированием
Старый 30.08.2011, 14:55   #13
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> нахрена вам знать, существует ли "соединение с интернетом"?
для парсера, который заносит инф. в БД
т.е. нужно сделать фактически функцию апдейта для проги, допустим поставлю ее в startup, комп загрузится, включится эта программа, а соед. с сетью еще не установлено, она захочет проапдейтить себя и вылезет алерт сбоя, ясное дела что прога полетит, вот как-то нужно проверять если соед. с интернет или нет.
AlienNation вне форума Ответить с цитированием
Старый 30.08.2011, 15:34   #14
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Arsenx777 Посмотреть сообщение
Но по моему этот пример самый удобный и простой
Код:
Try
 IdHTTP1.Get( 'http://yandex.ru' );
 connected := True;
Except
 connected := False;
End;
alert_Errore.JPG

Код:
Try
 html:=Form1.IdHTTP1.Get(url);
 connected:=true;
Except
 connected:=false;
 showmessage('internet connection disabled');
 end;
красиво?
AlienNation вне форума Ответить с цитированием
Старый 30.08.2011, 15:35   #15
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

гуглить не пробовали? статей очень много! вот пример http://articles.org.ru/cfaq/index.php?qid=942
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 30.08.2011, 16:10   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
она захочет проапдейтить себя и вылезет алерт сбоя
так а может просто обрабатывать ошибки при попытке апдейта?
пытайтесь подключится к интерсующему вас ресурсу, а не куда то там..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.08.2011, 16:18   #17
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так а может просто обрабатывать ошибки при попытке апдейта?
пытайтесь подключится к интерсующему вас ресурсу, а не куда то там..
к интересующему и подключаюсь (их там не много, страниц 20), апдейт заключет в себя парсинг, если какуе-то строку не получается пропарсить, то оно просто это пропустит и ошибок как таковых быть не может, даже если все 20 страниц пустые вернет, вариант с try except хороший конечно, самый простой вероятно, но как видишь не тут-то было.
AlienNation вне форума Ответить с цитированием
Старый 30.08.2011, 16:37   #18
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Arsenx777 Посмотреть сообщение
гуглить не пробовали? статей очень много! вот пример http://articles.org.ru/cfaq/index.php?qid=942
сильно много функций с параметрами, вижу только 1-у

Код:
 function isinternetconnected: boolean;
 begin
 result := getsystemmetrics(sm_network) and 1 > 0;
 end;
, которая флагирует true/false, поставил себе ёё, эффект тот же:

Код:
 Socket # Error 11001
 Host not found.
AlienNation вне форума Ответить с цитированием
Старый 30.08.2011, 19:50   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

AlienNation, выучите что такое отладка и как ей пользоватся.
отладчик по умолчанию всегда показывает исключения.(и можно полностью прочесть сообщение, и нажав ОК нажать Run, чтоб продолжить)
проверяйте и в отладке, и вне нее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.08.2011, 20:19   #20
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

ок, скажите, а как на счет такой вот конструкции?
Код:
procedure TForm1.Button9Click(Sender: TObject);
begin
IdIPWatch1.Active:=True;
if IdIPWatch1.IsOnline=False then begin
ShowMessage('No inet');
end else begin
 showmessage('Yes inet');
end;
поможет, как думаете?
у меня немного не получается,
при онлайн 1 раз No Inet, все последующие разы Yes Inet,
при оффлайн 1 раз No Inet, все последующие разы Yes Inet

исп. компонент TIdIPWatch с IndyMisc
AlienNation вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хук на интернет соединение dmitriegorovih Общие вопросы Delphi 9 11.01.2011 17:10
Интернет соединение Михаил Юрьевич Общие вопросы Delphi 2 16.09.2010 08:02
Как проверить соединение с интернет SeRhy Работа с сетью в Delphi 20 18.06.2010 08:25
Соединение через интернет (C++ Builder) badfilin C++ Builder 1 21.03.2010 21:32
Соединение с БД через Интернет Kate Работа с сетью в Delphi 1 08.06.2007 08:49