使用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;
}