![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение соединения с интернетом [D7, WinXP]
Wahnsinng © (2006-11-29 21:42:00)Подскажите как можно, если можно, без подвисания программы определить подключение к интернету.
Пробовал пинговать, конектиться к серверу - все работает, но при отключении инттернета программа зависает на некоторое время.
iXT (2006-12-05 09:20:00) [1]
> iXT Да я уже нашел, что искал спасибо.
Ну ты же не сказал об этом. (до этого)
ЗЫ
1. Лучше указывать не имя, а какой-нить IP - допустим есть соединение, но не указан (к примеру специально) сервер DNS
2. Какой-нить фаер может закрывать ICMP и результат у тебя будет неправильный.
wahnsinng (2006-12-04 21:12:00) [2]iXT Да я уже нашел, что искал спасибо.
kroner (2006-12-04 18:12:00) [3]и еще
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=netconnect&id=10116
kroner (2006-12-04 18:09:00) [4]
> wahnsinng © (03.12.06 16:10) [8]
> EIen. Ваш способ не работает.
Вот еще один -
Для работы Вам необходимо импортировать функцию InetIsOffline из URL.DLL:
function InetIsOffline(Flag: Integer): Boolean;
stdcall; external 'URL.DLL';
а затем поместить в программу простой вызов функции для проверки статуса соединения:
if InetIsOffline(0) then
ShowMessage('This computer is not connected to Internet!')
else
ShowMessage('You are connected to Internet!');
но ещё нужно учитывать, что функция эта выдает false не только, когда комп подключен к Интернету, но и когда ЕЩЕ НЕ БЫЛО ПОПЫТОК подключения (or if no attempt has yet been made to connect to the Internet), как сказано в официальной документации Microsoft по MSDN...
iXT (2006-12-04 18:04:00) [5]to wahnsinng © (04.12.06 17:43) [11]
т.е. в данной ситуации ты конкретно знаешь что и у кого ты должен спросить.
Вот когда ты соединение обрываешь, тебе ответ никто и не говорит (никто не отвечает).
А ждать(слушать) ты его как долго будешь?
wahnsinng (2006-12-04 17:44:00) [6]Смотрите покойника назад понесли!
wahnsinng (2006-12-04 17:43:00) [7]iXT Берешь и спрашиваешь у работников вытрезвителя.
DVM (2006-12-04 15:23:00) [8]
> Что будешь делать?
SOS на мобильнике набрать.
iXT (2006-12-04 15:05:00) [9]
> wahnsinng © (03.12.06 16:10)
Смотри:
проснулся ты со страшного бодуна (ну предположим был в бане 31 декабря).
Кругом все такие же - где никто не знает. Надо определить: "В вытрезвителе вы или нет"
Что будешь делать?
:)
wahnsinng (2006-12-03 16:10:00) [10]EIen. Ваш способ не работает. Я его уже проверял: отключаю dsl модем и он все равно говорит что интернет работает.
iXT (2006-12-01 16:18:00) [11]ICMP !!!
EIen (2006-12-01 10:02:00) [12]Wahnsinng © (29.11.06 21:42)
Попробуй так:
uses ... WinInet;
function TForm1.isconnected : Boolean ;
var
connectiontype: DWORD ;
begin
connectiontype:=INTERNET_CONNECTION_MODEM
+ INTERNET_CONNECTION_LAN
+ INTERNET_CONNECTION_PROXY ;
Result:=InternetGetConnectedState(@connectiontype,0);
end;
Если не затруднит, сообщи результат, у меня вроде бы отрабатывает (но я не в локалке)
iXT (2006-11-30 16:01:00) [13]
> Wahnsinng © (29.11.06 21:42)
Это не подвисание
novill (2006-11-30 15:59:00) [14]> [0] Wahnsinng © (29.11.06 21:42)
> отключении инттернета программа зависает на некоторое время.
проверять подключение в отдельном потоке.
iXT (2006-11-30 15:56:00) [15]
> Сергей М. © (30.11.06 09:31) [2]
> Что такое "отключение интернета" ?
Это такой рубильник (красного цвета похожий на стоп-кран в самолете). Оп, и нету интернета.
Сергей М. (2006-11-30 09:31:00) [16]
> при отключении инттернета
Что такое "отключение интернета" ?
grisme (2006-11-30 00:25:00) [17]Попробуй получить адрес какого-нибудь удаленного хоста :] GetHostByName, если nil - скорее всего не подключены.