Проверка доступа
От: YourLastSong  
Дата: 23.09.11 19:44
Оценка:
Здравствуйте, уважаемые господа.

Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.

Заранее благодарю за возможные ответы.
Re: Проверка доступа
От: Carc Россия https://vk.com/gosha_mazov
Дата: 23.09.11 22:07
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>Здравствуйте, уважаемые господа.


YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.


YLS>Заранее благодарю за возможные ответы.

InternetGoOnline
Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.
Возможно не совсем то, но поможет.
Aml Pages Home
Re[2]: Проверка доступа
От: YourLastSong  
Дата: 24.09.11 10:58
Оценка:
C>Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.

А кроме этого есть ещё хоть что-то?
Re: Проверка доступа
От: De-Bugger  
Дата: 24.09.11 11:36
Оценка: 2 (2)
Здравствуйте, YourLastSong, Вы писали:

YLS>Каким образом лучше всего проверить наличие доступа в интернет?


Никаким.
Re[3]: Проверка доступа
От: Carc Россия https://vk.com/gosha_mazov
Дата: 24.09.11 11:42
Оценка:
Здравствуйте, YourLastSong, Вы писали:

C>>Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.


YLS>А кроме этого есть ещё хоть что-то?

Есть! Есть MSDN.
Aml Pages Home
Re: Проверка доступа
От: YourLastSong  
Дата: 24.09.11 17:04
Оценка:
#include <cstdio>
#include <WinInet.h>

int main ()
{
DWORD flags;

bool state = InternetGetConnectedState (&flags,0);
if (state)
printf ("Ok");
else
printf ("No");
getchar ();
return 0;
}

Почему всегда возвращается true? Что не так?
Re[2]: Проверка доступа
От: Carc Россия https://vk.com/gosha_mazov
Дата: 24.09.11 18:12
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>#include <cstdio>

YLS>#include <WinInet.h>

YLS>int main ()

YLS>{
YLS> DWORD flags;

YLS> bool state = InternetGetConnectedState (&flags,0);

YLS> if (state)
YLS> printf ("Ok");
YLS> else
YLS> printf ("No");
YLS> getchar ();
YLS> return 0;
YLS>}

YLS>Почему всегда возвращается true? Что не так?


Return value
Returns TRUE if there is an active modem or a LAN Internet connection, or FALSE if there is no Internet connection, or if all possible Internet connections are not currently active. For more information, see the Remarks section.
When InternetGetConnectedState returns FALSE, the application can call GetLastError to retrieve the error code.
Remarks

A return value of TRUE from InternetGetConnectedState indicates that at least one connection to the Internet is available.
It does not guarantee that a connection to a specific host can be established.

Applications should always check for errors returned from API calls that connect to a server. InternetCheckConnection can be called to determine if a connection to a specific destination can be established.
A return value of TRUE indicates that either the modem connection is active, or a LAN connection is active and a proxy is properly configured for the LAN. A return value of FALSE indicates that neither the modem nor the LAN is connected. If FALSE is returned, the INTERNET_CONNECTION_CONFIGURED flag may be set to indicate that autodial is configured to "always dial" but is not currently active. If autodial is not configured, the function returns FALSE.

Aml Pages Home
Re[3]: Проверка доступа
От: YourLastSong  
Дата: 24.09.11 18:26
Оценка:
Как тогда поточнее можно проверить?
Re[4]: Проверка доступа
От: Carc Россия https://vk.com/gosha_mazov
Дата: 24.09.11 19:17
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>Как тогда поточнее можно проверить?

+ InternetCheckConnection как написано выше в цитате из MSDN...
Aml Pages Home
Re: Проверка доступа
От: morm Россия  
Дата: 25.09.11 17:08
Оценка:
Здравствуйте, YourLastSong, Вы писали:

YLS>Здравствуйте, уважаемые господа.


YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.


YLS>Заранее благодарю за возможные ответы.


Пинговать 194.87.0.50 (www.ru), если нет попробовать 77.88.21.3 (ya.ru), если нет — нет соединения. Если пинг проходит пробовать пинговать соответственно www.ru, ya.ru — проверка работы DNS. Как пинговать здесь здесь
Re: Проверка доступа
От: Centaur Россия  
Дата: 26.09.11 04:46
Оценка: 2 (2) +1
Здравствуйте, YourLastSong, Вы писали:

YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.


Лучше всего никак. Понятие «наличия доступа в интернет» невозможно определить так, чтобы это определение было одновременно корректно и полезно.

Вам нужен доступ к конкретному хосту — установите соединение и используйте его. Если имя хоста не разрезолвилось, обработайте ошибку. Если соединение не установилось, обработайте ошибку. Если соединение отвалилось в процессе работы, обработайте ошибку.

Если вы попробуете сначала определить наличие доступа, а потом использовать его — доступ пропадёт сразу после того, как определилось, что он есть, но до того, как вы успеете его использовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.