Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение соединения с интернетом [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 - скорее всего не подключены.


Наверх

Титульная страница Поиск, карта сайта Написать письмо