Подключен ли компьютер к интернету: Вариант 1

Автор: SUnteXx

Существует много способов определения, в сети ли компьютер (имеется в виду не сеть, в которой 220 вольт, а net, в данном случае Internet). Некоторые способы, такие как пингование какого-нибудь IP'шника очень опасны, имхо, по нескольким причинам. Во-первых, если человек не в сети, то высветиться табличка, что «некто пытается соединиться с серваком таким-то, не хотите соединиться (Да/нет)». Можно, конечно, пинговать сайт Microsoft'а и свалить все на вынды, но надо ли это, если есть другие способы.

Правильность работы функции не гарантирую, но работать должно (много не тестил эту функцию).

#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#include <conio.h>
 
typedef BOOL (WINAPI* INETCHECKPROC) (LPDWORD lpdwFlags, DWORD dwReserved);
 
bool GetStatusConnect()
// возвращает 1, если комп подключен к интеренту, в противном случае - 0
{
    bool bRetVal;
    HINSTANCE hLib = NULL;
    INETCHECKPROC pfnInternetGetConnectedState;
 
// грузим (в смысле загружаем) библиотеку wininet.dll
    hLib = LoadLibrary("wininet.dll");
    if (!hLib) // если не получилось загрузить библиотеку, то
        return 0; // возвращаем 0
 
 
// получаем адрес функции InternetGetConnectedState
    pfnInternetGetConnectedState = (INETCHECKPROC)GetProcAddress(hLib, "InternetGetConnectedState");
 
// Если не удалось получить адрес функции
    if(!pfnInternetGetConnectedState)
        return false; // возвращаем 0
 
    DWORD lpdwFlags;
 
// проверяем соединение
    bRetVal = pfnInternetGetConnectedState(&lpdwFlags, 0) != 0;
 
    FreeLibrary(hLib); // выгружаем библиотеку
    return bRetVal; // возвращаем статус подключения
}
 
faq/c_c_/check_connection_1.txt · Последние изменения: 2006/05/10 14:18 (внешнее изменение)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki