C++实现判断网络连接情况以及连接的方式

8864 人浏览 | 时间: 2015-08-15 22:08:53 | 作者: codexia 会员文章,禁止转载

    使用C++实现的判断电脑网络是否连接,以及通过什么方式连接的代码实现。代码中有比较清楚的注释,后面再简单解释一下代码,很简单。

先看看效果图:


下面来看看代码实现,可以直接复制,CTRL+C复制,放在项目中就可以了。

#include <Windows.h>// Windows定义的类型DWORD等
#include <Wininet.h>// InternetGetConnectedState声明
#include <Sensapi.h>// IsNetworkAlive声明
#include <iostream> // C++输入输出头文件,C++技术网提供代码
using namespace std;

// 导入lib文件的预编译指令,不必在项目属性中添加了
#pragma comment(lib,"Wininet.lib")
#pragma comment(lib,"Sensapi.lib")

void ShowInternetConnectedState()
{
    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";
}

void ShowIsNetworkAlive()
{

    DWORD   flags;//上网方式 
    BOOL   m_bOnline = TRUE;//是否在线  

    m_bOnline = IsNetworkAlive(&flags);
    if (m_bOnline)//网络已连接  
    {
        if ((flags & NETWORK_ALIVE_LAN) == NETWORK_ALIVE_LAN)
        {
            cout << "网络已连接:通过局域网连接\n";
        }
        if ((flags & NETWORK_ALIVE_WAN) == NETWORK_ALIVE_WAN)
        {
            cout << "网络已连接:通过广域网连接\n";
        }
        if ((flags & NETWORK_ALIVE_AOL) == NETWORK_ALIVE_AOL)
        {
            cout << "网络已连接:已连接至美国网络(此状态已不可用)\n";
        }
    }
    else
        cout << "网络未连接\n";
}

void main()
{
    int i = 0;
    while (TRUE)
    {
        cout << "请选择测试的方式:1 或者 2\n"
            << "1. 获取网络状态\n"
            << "2. 检查网络是否活动\n"
            << endl;
        cin >> i;
        switch (i)
        {
        case 1:
            ShowInternetConnectedState();
            break;
        case 2:
            ShowIsNetworkAlive();
            break;
        default:
            cout << "错误!\n";
        }
        cout << endl;
    }
}
当前文章为会员文章,请前往[用户中心]开通会员后继续阅读。

相关阅读