Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Наилучший способ проверки наличия интернета

Ответить
Настройки темы
Наилучший способ проверки наличия интернета

Аватара для sashadeg

Старожил


Сообщения: 379
Благодарности: 6

Профиль | Отправить PM | Цитировать


Я знаю 3 способа проверки наличия интернета, может кто знает ещё какой-нибудь?
И какой из них самый оптимальный?

1. Вернуть IP адресс, и если он НЕ равен -1, то инет есть. (долгий)
2. Пинговать google.com или какой-нибудь другой глобальный сервер (я считаю что этот самый оптимальный. ИМХО)
3. _WinAPI_IsNetworkAlive

Вот о последнем хотел узнать поподробнее..., как эта функция проверяет наличие интернета? Тоже пингует? Или как?

_________________________________добавил__________________________________
если _getIP использовать с повторением в 5-10 сек, он не нагрузит интернет? Или как нибудь косвенно повлияет на систему?

-------
Ну вы ребята даёте...


Отправлено: 14:26, 27-02-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата madmasles:
Ругается »
Это если проверять синтаксиси? по идее я сделал неправильно, нужно явно указать размерность массива:
Код: Выделить весь код
Local $aRetState[7][2] = [[6]]
Цитата sashadeg:
если ввожу вместо "google.ru" какой-нибудь не сушествующий адрес (чтобы не пропинговало) то всё-равно показывает, будто нету инета »
Всё верно, там нужно указывать существующий адрес, это как бы ещё и проверка на отзывчивость сервера

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 19:52, 28-02-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для sashadeg

Старожил


Сообщения: 379
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Всё верно, там нужно указывать существующий адрес, это как бы ещё и проверка на отзывчивость сервера »
хммм... тогда я может неправельно понял вот эту фразу?:
Цитата:
сначала проверяется Ping, а затем (если он неудачно отработал) проверяется состояние подключения сети. »
Зачем тогда проверять состояние подключения сети, если после НЕУДАЧНОЙ пинговки одного сервера выходит сообщение о неработоспособности всего интернета? А если пинг прошел УДАЧНО, то опять же зачем проверять состояние сети? Не думаю что пинг будет при нерабочем состоянии сети
или я что-то не понимаю?

-------
Ну вы ребята даёте...


Отправлено: 20:32, 28-02-2010 | #12


Аватара для Sp01LeR

Пользователь


Сообщения: 60
Благодарности: 13

Профиль | Отправить PM | Цитировать


Цитата sashadeg:
Зачем тогда проверять состояние подключения сети, если после НЕУДАЧНОЙ пинговки одного сервера выходит сообщение о неработоспособности всего интернета? »
Чтобы знать где проблема -
если пинг прошел удачно с google.ru - все ок
если пинг вернул таймаут, но соединение установлено - значит виноват твой провайдер
если соединение не установлено(если перед этим было открыто) - значит провайдер закрыл соединение или ошибка ОС(неожиданная перезагрузка) и т.д.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:00, 28-02-2010 | #13


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата sashadeg:
ачем тогда проверять состояние подключения сети, если после НЕУДАЧНОЙ пинговки одного сервера выходит сообщение о неработоспособности всего интернета? »
Сервер может и не отвечать - Это как бы подстраховка.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:35, 28-02-2010 | #14


Аватара для centaurvv

Новый участник


Сообщения: 24
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата madmasles:
Откройте C:\Program Files\AutoIt3\Include\WinAPIEx.au3 и найдите нужную Вам функцию.
По-моему, _WinAPI_IsNetworkAlive самый оптимальный способ »
Что-то я у себя не нахожу этот файл, как впрочем и функцию _WinAPI_IsNetworkAlive в списке доступных функций.
Эт я чего-то еще не докачал?

Отправлено: 02:22, 03-03-2010 | #15


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


centaurvv,
WinAPIEx

Отправлено: 02:56, 03-03-2010 | #16


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Можно так (достаточно быстрый способ) или как советовал madmasles.

Код: Выделить весь код
#Include <WinAPI.au3>

; #FUNCTION# ========================================================================================================================
; Function Name:    _IsInternet
; Description:      Check for Internet connection.
; Syntax:           _IsInternet (  )
; Parameter(s):     None.
; Return Value(s):  Success: Returns 1.
;                   Failure: Returns 0 and sets the @error flag to non-zero. @extended flag will contain the error code
;                            are specific to the WinINet functions.
;
; Author(s):        Yashied
; Note(s):          -
;====================================================================================================================================

Func _IsInternet()

    Local $Ret = DllCall('wininet.dll', 'int', 'InternetGetConnectedState', 'dword*', 0x20, 'dword', 0)

    If (@error) Then
        Return SetError(1, 0, 0)
    EndIf

    Local $wError = _WinAPI_GetLastError()

    Return SetError((Not ($wError = 0)), $wError, $Ret[0])
EndFunc   ;==>_IsInternet

ConsoleWrite(_IsInternet() & @CR)
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:04, 03-03-2010 | #17


ИО Капитана Очевидности


Contributor


Сообщения: 5383
Благодарности: 1105

Профиль | Отправить PM | Цитировать


Цитата sashadeg:
1. Вернуть IP адресс, и если он НЕ равен -1, то инет есть. (долгий)
2. Пинговать google.com или какой-нибудь другой глобальный сервер (я считаю что этот самый оптимальный. ИМХО)
3. _WinAPI_IsNetworkAlive »
1 - неправильный. Адрес может быть получен от DHCP-сервера локальной сети, но в этой сети для интернета может потребоваться создание коммутируемого подключения
3 - хз,*что за функция, но возражения опять таки, как в п.1
Вариант №4 - проверка активности коммутируемого подключения. Возражения противоположные п.1 - интернет может быть доступен через маршрутизатор локальной сети.

Оптимальным является п.2

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:19, 03-03-2010 | #18


Аватара для sashadeg

Старожил


Сообщения: 379
Благодарности: 6

Профиль | Отправить PM | Цитировать


Yashied, спасибо. Ну как я понял это та же конфетка что и у Creat0R только в другой бумажке

В общем к концу темы я склоняюсь у ДВУМ вариантам... Второй мне нравится больше ,но хз надежный ли он? А первый - давно провереный метод, но иногда глючный.
1. Пинг
2. WinAPI
(см далее)
читать дальше »
Код: Выделить весь код
#Include <WinAPI.au3>

; #FUNCTION# ========================================================================================================================
; Function Name:    _IsInternet
; Description:      Check for Internet connection.
; Syntax:           _IsInternet (  )
; Parameter(s):     None.
; Return Value(s):  Success: Returns 1.
;                   Failure: Returns 0 and sets the @error flag to non-zero. @extended flag will contain the error code
;                            are specific to the WinINet functions.
;
; Author(s):        Yashied
; Note(s):          -
;====================================================================================================================================

Func _IsInternet()

    Local $Ret = DllCall('wininet.dll', 'int', 'InternetGetConnectedState', 'dword*', 0x20, 'dword', 0)

    If (@error) Then
        Return SetError(1, 0, 0)
    EndIf

    Local $wError = _WinAPI_GetLastError()

    Return SetError((Not ($wError = 0)), $wError, $Ret[0])
EndFunc   ;==>_IsInternet

ConsoleWrite(_IsInternet() & @CR)

-------
Ну вы ребята даёте...


Отправлено: 17:14, 03-03-2010 | #19


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Согласно вот этому, какой бы способ не был выбран, без запроса к серверу нельзя однозначно сказать есть ли соединение с интернетом или нет. Вот такая вот путаница...

Отправлено: 19:52, 03-03-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Наилучший способ проверки наличия интернета

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Проверка наличия соединения с интернетом (*.vbs) BadAngel Скриптовые языки администрирования Windows 9 18-04-2011 12:06
Интернет - [решено] Какой тип сети наилучший и "найбыстрейший"? flev45 Microsoft Windows 7 6 25-11-2009 02:06
CMD/BAT - Проверка наличия диска в дисководе по папке MedVetoff Скриптовые языки администрирования Windows 8 27-08-2009 16:55
[решено] Определение наличия рисунка System Failure Вебмастеру 4 15-02-2009 01:02
[решено] Проверка наличия поля в таблице БД Artem-Samsung Вебмастеру 8 19-03-2008 21:40




 
Переход