Помощь - Поиск - Пользователи - Календарь
Полная версия: подключение к интернету
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
kuzyara
я нашел три способа как проверить подключение к интернету, но все они говорят неправду!!! wacko.gif почему?? может есть какой-нибудь другой способ??


№1
function InetIsOffline(flag: integer): WordBool; stdcall; external 'url.dll';
-------------------------------------------------------------
if InetIsOffline(0)
then ShowMessage('This computer is not connected to Internet!')
else ShowMessage('You are connected to Internet!');



№2
uses ..., WinInet;
-------------------------------------------------------------
if InternetCheckConnection(nil,$00000001,0)
then showmessage('est inet')
else showmessage('net ineta');



№3
if GetSystemMetrics(SM_NETWORK) and $01 = $01
then ShowMessage('Computer is attached to a network!')
else ShowMessage('Computer is not attached to a network!');
Lapp
А известно, что внутри у этих функций?
Можно же по-простому пинговать несколько сайтов. Если хоть один пакет вернется - все ок.
kuzyara
Цитата(Lapp @ 20.01.2007 15:06) *

А известно, что внутри у этих функций?
Можно же по-простому пинговать несколько сайтов. Если хоть один пакет вернется - все ок.

а можно пример, или мат-л по осуществлению!?
volvo
Цитата
почему??
Потому, что:
1) GetSystemMetrics говорит, что
Цитата
SM_NETWORK - The least significant bit is set if a network is present; otherwise, it is cleared. The other bits are reserved for future use.
Где-то сказано про интернет? Говорится про сеть, а это - разные вещи... Здесь проверяется только активность сетевого интерфейса...

2) то, что InternetCheckConnection не работает как положено - указано в DRKB, странно, что ты не читаешь ее...

3) по поводу "подключение к Интернету"... Определи, пожалуйста это понятие, потом продолжим обсуждать тему. Пока НИКТО не смог внятно определить что же это есть - "подключение к Интернету"...

4) если надумаешь использовать InternetGetConnectedState, то можешь даже не пытаться:
Цитата(MSDN)
You cannot rely solely on the fact that InternetGetConnectedState returning TRUE means that you have a valid active Internet connection. It is impossible for InternetGetConnectedState to determine if the entire connection to the Internet is functioning without sending a request to a server. This is why you need to send a request to determine if you are really connected or not. You can be assured however that if InternetGetConnectedState returns TRUE, that attempting your connection will NOT cause you to be prompted to connect to the default Internet Service Provider.
kuzyara
Цитата
Потому, что:
1) GetSystemMetrics говорит, что

ок, согласен. просто "сеть" ассоциируется с Интернетом, а следовательно и взаимозаменяется smile.gif (по крайней мере у меня до этого момента)

Цитата
2) то, что InternetCheckConnection не работает как положено

надежда умирает последней smile.gif , там же строго не сказано - не работает; автор сам просит пролить свет на проблему этой функции.

Цитата
указано в DRKB, странно, что ты не читаешь ее...

читаю, все эти примеры оттуда и взяты...

Цитата
3) по поводу "подключение к Интернету"...

может я и неясно спросил, но по крайней мере можно было догадаться по примерам, которые я привел. в этой теме я поставил вопрос о функциях, которые определяют, подключен ли компьютер к интернету в данный момент, или нет.
volvo
Я же просто так ничего не спрашиваю... Ты ничуть не изменил то, что написал выше...
Цитата
подключен ли компьютер к интернету в данный момент, или нет.
Я же тебя спрашиваю, КАК подключен? Читай, а не просматривай ответы... Соединение обязано быть физическим? Попробуй ответить на этот вопрос...
мисс_граффити
Цитата
Можно же по-простому пинговать несколько сайтов. Если хоть один пакет вернется - все ок.

Я такую штуку делала с помощью компонента Ping библиотеки Internet Component Suite....
Рассказать подробнее?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.