|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Наилучший способ проверки наличия интернета |
|
Наилучший способ проверки наличия интернета
|
Старожил Сообщения: 379 |
Профиль | Отправить PM | Цитировать Я знаю 3 способа проверки наличия интернета, может кто знает ещё какой-нибудь?
И какой из них самый оптимальный? 1. Вернуть IP адресс, и если он НЕ равен -1, то инет есть. (долгий) 2. Пинговать google.com или какой-нибудь другой глобальный сервер (я считаю что этот самый оптимальный. ИМХО) 3. _WinAPI_IsNetworkAlive Вот о последнем хотел узнать поподробнее..., как эта функция проверяет наличие интернета? Тоже пингует? Или как? _________________________________добавил__________________________________ если _getIP использовать с повторением в 5-10 сек, он не нагрузит интернет? Или как нибудь косвенно повлияет на систему? |
|
------- Отправлено: 14:26, 27-02-2010 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Цитата sashadeg:
По-моему, _WinAPI_IsNetworkAlive самый оптимальный способ. |
|
Отправлено: 15:52, 27-02-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Цитата madmasles:
Просто если стандартные экранчики в трее показывают наличие интернета, то это не значит что он есть Может эта функция берёт инфу из windows? значит не факт |
|
------- Отправлено: 16:14, 27-02-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Есть вот такой вариант:
$Connected = IsConnected() If Not $Connected Then MsgBox(0,"","Соединение отсутствует" & @LF & $Connected) Else MsgBox(0,"","Соединение установлено [" & $Connected & "]") EndIf Func IsConnected($sPingHost="google.com", $iPingTimeOut=1000) Local $iPing_Results = Ping($sPingHost, $iPingTimeOut) If $iPing_Results > 0 Then Return $iPing_Results Local $hWinInetDll = DllOpen("wininet.dll") If $hWinInetDll = -1 Then Return SetError(1, 0, -1) Local $aRet = DllCall($hWinInetDll, "int", "InternetGetConnectedState", "int", 0, "int", 0) DllClose($hWinInetDll) If IsArray($aRet) Then $aRet = $aRet[0] Else $aRet = 0 EndIf If $aRet And $iPing_Results <= 0 Then Return 0 Return $aRet EndFunc |
------- Отправлено: 22:29, 27-02-2010 | #4 |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Creat0R, прикольный скрипт, но Вы сможете рассказать плюсы и минусы этого способа?
Вижу подключается wininet.dll, что он делает? |
|
------- Отправлено: 07:05, 28-02-2010 | #5 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать sashadeg,
Вот еще тема:Проверка на подключение к интернету WAN Цитата sashadeg:
|
|
Последний раз редактировалось madmasles, 28-02-2010 в 11:02. Отправлено: 10:39, 28-02-2010 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата sashadeg:
Цитата sashadeg:
|
||
------- Отправлено: 15:58, 28-02-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вот сделал пример отображающий состояние подключения в GUI (на основе этого примера на vb):
#include <GUIConstantsEx.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $aConnection_State = _InternetGetConnectedState() GUICreate("_InternetGetConnectedState", 270, 320) GUICtrlCreateLabel("Connected via MODEM:", 20, 20) GUICtrlCreateInput($aConnection_State[1][0], 150, 17, 100) GUICtrlCreateLabel("Connected via LAN:", 20, 50) GUICtrlCreateInput($aConnection_State[2][0], 150, 47, 100) GUICtrlCreateLabel("Connected via PROXY:", 20, 80) GUICtrlCreateInput($aConnection_State[3][0], 150, 77, 100) GUICtrlCreateLabel("Modem busy:", 20, 110) GUICtrlCreateInput($aConnection_State[4][0], 150, 107, 100) GUICtrlCreateLabel("Connection RAS installed:", 20, 140) GUICtrlCreateInput($aConnection_State[5][0], 150, 137, 100) GUICtrlCreateLabel("Connection is offline:", 20, 170) GUICtrlCreateInput($aConnection_State[6][0], 150, 167, 100) GUICtrlCreateLabel("Connection description:", 20, 200) GUICtrlCreateEdit("", 20, 220, 230, 80, $ES_WANTRETURN) For $i = 1 To $aConnection_State[0][0] If $aConnection_State[$i][0] Then GUICtrlSetData(-1, "* " & $aConnection_State[$i][1] & @CRLF, 1) Next GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _InternetGetConnectedState() Local Const $INTERNET_CONNECTION_MODEM = 0x1 ;Local system uses a modem to connect to the Internet. Local Const $INTERNET_CONNECTION_LAN = 0x2 ;Local system uses a local area network to connect to the Internet. Local Const $INTERNET_CONNECTION_PROXY = 0x4 ;Local system uses a proxy server to connect to the Internet. Local Const $INTERNET_CONNECTION_MODEM_BUSY = 0x8 ;No longer used. Local Const $INTERNET_RAS_INSTALLED = 0x10 ;Remote Access Services are installed on this system. Local Const $INTERNET_CONNECTION_OFFLINE = 0x20 ;Local system is in offline mode. Local Const $INTERNET_CONNECTION_CONFIGURED = 0x40 ;Local system has a valid connection to the Internet, but it might or might not be currently connected. Local $aRetState[7][2] = [[UBound($aRetState)-1]] Local $aRet = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int*", 0, "int", 0) ;For AutoIt < 3.2.10.0 the next line should be used ;Local $aRet = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0) If UBound($aRet) > 0 And $aRet[0] Then $aRetState[1][0] = BitAND($aRet[1], $INTERNET_CONNECTION_MODEM) <> 0 $aRetState[1][1] = "The local system uses a modem to connect to the Internet." $aRetState[2][0] = BitAND($aRet[1], $INTERNET_CONNECTION_LAN) <> 0 $aRetState[2][1] = "The local system connects to the Internet via a LAN" $aRetState[3][0] = BitAND($aRet[1], $INTERNET_CONNECTION_PROXY) <> 0 $aRetState[3][1] = "The local system uses a proxy server to connect to the Internet." If $aRetState[3][0] Then $aRetState[2][1] &= ", and uses a proxy server." Else $aRetState[2][1] &= "." EndIf $aRetState[4][0] = BitAND($aRet[1], $INTERNET_CONNECTION_MODEM_BUSY) <> 0 $aRetState[4][1] = "The local system's modem is busy with a non-Internet connection." $aRetState[5][0] = BitAND($aRet[1], $INTERNET_RAS_INSTALLED) <> 0 $aRetState[5][1] = "Remote Access Services are installed on this system." $aRetState[6][0] = BitAND($aRet[1], $INTERNET_CONNECTION_OFFLINE) <> 0 $aRetState[6][1] = "The connection is currently offline." Else Return SetError(1, 0, _WinAPI_GetLastErrorMessage()) EndIf Return $aRetState EndFunc |
------- Отправлено: 16:39, 28-02-2010 | #8 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:05, 28-02-2010 | #9 |
Старожил Сообщения: 379
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Может попробовать пропинговать, если пинг не удался, то вернуть IP. А если пинг удался, то сразу показать что инет есть, без возврашения IP? |
|
------- Отправлено: 19:39, 28-02-2010 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|