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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2007, 09:43   #1
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,082
По умолчанию проверка подключения к Интернет

Подскажите пожалуйста, как произвести проверку подключения к интернет, если связь есть то нечего не делать, а если нет то установить связь.Желательно что бы проверка выполнялась по заданному интервалу времени. Если можно то дайте примеры, а если кто знает такую программу то подскажите название.
Noor вне форума Ответить с цитированием
Старый 16.02.2007, 01:33   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
function IsConnectedToInternet(lpdwFlags: LPDWORD): Boolean;
const
WininetDLL = 'wininet.dll';
var
hWininetDLL: THandle;
dwReserved: DWORD;
fn_InternetGetConnectedState: function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
begin
Result := False;
dwReserved := 0;
hWininetDLL := LoadLibrary(WininetDLL);
if hWininetDLL > 0 then
begin
@fn_InternetGetConnectedState := GetProcAddress(hWininetDLL,'InternetGetConnectedState');
if Assigned(fn_InternetGetConnectedState) then
begin
Result := fn_InternetGetConnectedState(lpdwFlags, dwReserved);
end;
FreeLibrary(hWininetDLL);
end else
raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);
end;

procedure TForm1.Button1Click(Sender: TObject);
const
INTERNET_CONNECTION_MODEM = 1;
INTERNET_CONNECTION_LAN = 2;
INTERNET_CONNECTION_PROXY = 4;
INTERNET_CONNECTION_MODEM_BUSY = 8;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes :=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
if IsConnectedToInternet(@dwConnectionTypes) then
ShowMessage('Connected.')
else
ShowMessage('Not Connected.')
end;

Последний раз редактировалось mihali4; 18.10.2011 в 22:54.
mihali4 вне форума Ответить с цитированием
Старый 16.02.2007, 09:04   #3
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,082
По умолчанию

Respect mihali4
Noor вне форума Ответить с цитированием
Старый 03.06.2011, 04:12   #4
Sater
Новичок
Джуниор
 
Регистрация: 07.06.2010
Сообщений: 2
По умолчанию

полезная инфа, спасибо
Sater вне форума Ответить с цитированием
Старый 03.06.2011, 16:54   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ф-ция InternetGetConnectedState() не дает ответа на вопрос подключен ли хост к Интернету. Ф-ция всего лишь проверяет статус интерфейса связи с некоей сетью (например, с подсетью провайдера)
Да и сама постановка вопроса о "подключенности к Интернету" бессмыленна изначально.

О подключенности к Интернету можно судить лишь по существованию маршрута до хостов за пределами подсети провайдера, а для этого нужно отправить запрос некоему такому хосту (например, по протоколу ICMP, более известному в народе как "пинг") и получить от хоста ожидаемый ответ. И даже "пинг" не дает 100%-го ответа на поставленный вопрос - на маршруте до внешнего хоста запросто может находиться маршрутизатор, на котором по капризу админа трансляция пингующих пакетов запрещена.

Последний раз редактировалось mss; 03.06.2011 в 17:00.
mss вне форума Ответить с цитированием
Старый 05.06.2011, 00:20   #6
idip
 
Регистрация: 19.06.2009
Сообщений: 5
По умолчанию

Можно так с помощью компонента IdIPWatch:
if IdIPWatch1.IsOnline=true then showmessage('Интернет подключён.') else
showmessage('Интернет не подключён.');
idip вне форума Ответить с цитированием
Старый 05.06.2011, 01:52   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

я не пингую и не пользуюсь библиотекой. Просто пытаюсь подключиться к http://google.com/, 3 раза по 3 секунды. Если все 3 раза false, то инета нет. Если хотябы один есть, то соединение с ним кривое, если 2 из трех или 3, то все нормально.
Человек_Борща вне форума Ответить с цитированием
Старый 05.06.2011, 11:10   #8
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Хм, по - моему все проще =)
Код:
Try
 IdHTTP1.Get( 'http://yandex.ru' );
 connected := True;
Except
 connected := False;
End;
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 12.07.2011, 15:56   #9
Santino
 
Регистрация: 09.06.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от lux16 Посмотреть сообщение
Хм, по - моему все проще =)
Проще? Да. Лучше? Нет.
Почему?
Потому что 1 такой запрос будет отъедать трафик (примерно 340Кбайт). А если клиент будет на слабеньком GPRS модеме через мобильный телефон, то и время займет изрядно. Уж лучше выбрать другой сайт, заведомо меньше размером -хотя бы тот же www.ya.ru
Santino вне форума Ответить с цитированием
Старый 13.07.2011, 01:44   #10
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Цитата:
Сообщение от Santino Посмотреть сообщение
Проще? Да. Лучше? Нет.
Почему?
Потому что 1 такой запрос будет отъедать трафик (примерно 340Кбайт). А если клиент будет на слабеньком GPRS модеме через мобильный телефон, то и время займет изрядно. Уж лучше выбрать другой сайт, заведомо меньше размером -хотя бы тот же www.ya.ru
Уважаемый ты придираешься, я лишь показываю пример реализации, а сайт ты прав, нужно другой
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка подключения Shouldercannon Общие вопросы Delphi 4 11.08.2008 14:41
Проверка подключения к интернету badfilin Общие вопросы C/C++ 9 28.03.2008 02:27
Настройка VPN подключения Altera Операционные системы общие вопросы 3 07.02.2008 11:39
Ошибка подключения к БД CruiserD БД в Delphi 5 26.10.2007 14:42
Время подключения vitalik007 Работа с сетью в Delphi 1 15.08.2007 13:10