Здравствуйте, YourLastSong, Вы писали:
YLS>Здравствуйте, уважаемые господа.
YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.
YLS>Заранее благодарю за возможные ответы. InternetGoOnline
Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.
Возможно не совсем то, но поможет.
C>Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.
Здравствуйте, YourLastSong, Вы писали:
C>>Если подключение уже есть — вернет TRUE. Если подключения нет — то выдаст MessageBox подключать или нет: если юзер согласится — то установит подключение и вернет TRUE, иначе вернет FALSE.
YLS>А кроме этого есть ещё хоть что-то?
Есть! Есть MSDN.
Здравствуйте, 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.
Здравствуйте, YourLastSong, Вы писали:
YLS>Здравствуйте, уважаемые господа.
YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.
YLS>Заранее благодарю за возможные ответы.
Пинговать 194.87.0.50 (www.ru), если нет попробовать 77.88.21.3 (ya.ru), если нет — нет соединения. Если пинг проходит пробовать пинговать соответственно www.ru, ya.ru — проверка работы DNS. Как пинговать здесь здесь
Здравствуйте, YourLastSong, Вы писали:
YLS>Каким образом лучше всего проверить наличие доступа в интернет? Основные условия к функции — быстродействие и точность.
Лучше всего никак. Понятие «наличия доступа в интернет» невозможно определить так, чтобы это определение было одновременно корректно и полезно.
Вам нужен доступ к конкретному хосту — установите соединение и используйте его. Если имя хоста не разрезолвилось, обработайте ошибку. Если соединение не установилось, обработайте ошибку. Если соединение отвалилось в процессе работы, обработайте ошибку.
Если вы попробуете сначала определить наличие доступа, а потом использовать его — доступ пропадёт сразу после того, как определилось, что он есть, но до того, как вы успеете его использовать.