|
Вопрос # 4 172/ вопрос открыт / |
|
Здравствуйте!
Подскажите, нужно программно узнать есть ли соеденения с интернетом или нету, как это сделать ?
 |
Вопрос задал: niva622 (статус: Посетитель)
Вопрос отправлен: 16 мая 2010, 18:17
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: ast
Здравствуйте, niva622!
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;
 |
Ответ отправил: ast (статус: 1-ый класс)
Время отправки: 20 мая 2010, 09:05
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 10; последнее сообщение — 21 мая 2010, 14:27; участников в обсуждении: 4.
|
Death_Master (статус: Посетитель), 16 мая 2010, 18:28 [#1]:
Всё очень просто.... нужно пропинговать пару адресов
8.8.8.8 4.2.2.4
Если пакеты прошли, значит интернет есть...
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
niva622 (статус: Посетитель), 16 мая 2010, 18:32 [#2]:
можно весь код написать.. как пропинговать сеть ?
|
|
niva622 (статус: Посетитель), 16 мая 2010, 19:02 [#4]:
спасибо...
|
|
Вадим К (статус: Академик), 16 мая 2010, 20:48 [#5]:
В целом, пинг - это ещё не достаточно. Может днс не работать. А может и он работать, но интернета "не будет". А кому то если Вконтакт не работает, то всё, интернет не работает. Поэтому обычно нужно проверять целенаправленно нужные сайты - просто скачать заглавную страницу.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Death_Master (статус: Посетитель), 16 мая 2010, 21:01 [#6]:
Вадим К: В моём предложении пингуются 2 мировые ДНСки....
Я думаю, что мало шансов с нерабочим интернетом до них достучаться....
Вопрос был по проверке работы подключения к интернету, а не к каким-то конкретным сайтам...
Вероятность, что обе ДНСки лягут одновременно- практически нулевая....
В общем-то можно проверять и несколькими способами, но нужны ли человеку лишние сложности?
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
Вадим К (статус: Академик), 16 мая 2010, 21:10 [#7]:
есть куча способов, когда все сервера будут пинговаться, а ни одна страница не откроется (например провайдерский днс упал - вполне типичная ситуация). И для человека это будет отсутствие интернета. Подумайте об этом.
А может быть по другому. Ни одна машина не будет пинговаться. А интернет будет. И таких ситуаций тоже много. Например хитрая прокся.
Галочка "подтверждения прочтения" - вселенское зло.
|
17 мая 2010, 13:02: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с сетями и протоколами модератором Ерёмин А.А.
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 18 мая 2010, 08:50 [#8]:
Кстати Windows 7 более-менее достоверно определяет наличие подключения к и-нету, интересно, как это сделано?
|
|
Вадим К (статус: Академик), 18 мая 2010, 10:31 [#9]:
Подозреваю, что просто ходит на сайт майкрософта и пробует скачать оттудова заведомо известные файлы.
Также мне точно известно, что Виста и старше умеют определять роутер и забирать с него настройки. Это иногда сильно упрощает жизнь. Хотя подключаться к WiFi в некоторых случаях так и не научилась, тогда когда все другие устройства и операционные системы с пол пинка (у меня на работе такая ситуация, Линукс, Мак, Андроид, Айфон, Нокии подключаются моментально. А все Windows'ы нужно зайти ручками и поправить настройку).
Галочка "подтверждения прочтения" - вселенское зло.
|
|
niva622 (статус: Посетитель), 21 мая 2010, 14:27 [#10]:
всем спасибо
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|