C++ 判断网络是否连通

使用InternetGetConnectedState这个API判断网络是否连通

详细说明:
虽然MSDN中定义了7种参数类型,但实际中wininet.h头文件中只对四种类型的值进行了定义
7种类型:
INTERNET_CONNECTION_LAN          局域网
INTERNET_CONNECTION_MODEM        拨号上网
INTERNET_CONNECTION_PROXY       代理
INTERNET_CONNECTION_MODEM_BUSY  代理被占用

INTERNET_CONNECTION_CONFIGURED    虽然可以联网,但当前不可用
INTERNET_CONNECTION_OFFLINE     离线
INTERNET_RAS_INSTALLED       RAS安装

 Wininet.h头文件中值定义:
// Flags for InternetGetConnectedState
#define INTERNET_CONNECTION_MODEM             1
#define INTERNET_CONNECTION_LAN                2
#define INTERNET_CONNECTION_PROXY             4
#define INTERNET_CONNECTION_MODEM_BUSY      8

void InternetTell()
{
    DWORD flags;//上网方式
    BOOL m_bOnLine = TRUE; //是否在线
    m_bOnLine = InternetGetConnectedState(&flags,0);
    if(m_bOnLine)
    {
        if ((flags & INTERNET_CONNECTION_MODEM) ==INTERNET_CONNECTION_MODEM) 
            cout<<"在线:拨号上网\n"; 
        if ((flags & INTERNET_CONNECTION_LAN) ==INTERNET_CONNECTION_LAN) 
            cout<<"在线:通过局域网\n"; 
        if ((flags & INTERNET_CONNECTION_PROXY) ==INTERNET_CONNECTION_PROXY) 
            cout<<"在线:代理\n"; 
        if ((flags & INTERNET_CONNECTION_MODEM_BUSY) ==INTERNET_CONNECTION_MODEM_BUSY) 
            cout<<"MODEM被其他非INTERNET连接占用\n"; 
    }else
        cout<<"非在线\n"; 
}

int main()

{

         InternetTell();

         return 0;

}

你可能感兴趣的:(C++ 判断网络是否连通)