C++ 判断当前网络是否正常,

#include<iostream>

#include <Netlistmgr.h>
static bool checkIsNetwork()
{
    Sleep(1000);
    CoInitialize(NULL);
    //  通过NLA接口获取网络状态    
    IUnknown *pUnknown = NULL;  
    BOOL   bOnline = false;  
    //是否在线      
    HRESULT Result = CoCreateInstance(CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_IUnknown, (void **)&pUnknown);  //创建一个com对象
    if (SUCCEEDED(Result))   
    {
        INetworkListManager *pNetworkListManager = NULL; 
        if (pUnknown)           
            Result = pUnknown->QueryInterface(IID_INetworkListManager, (void **)&pNetworkListManager);
        if (SUCCEEDED(Result))      
        {
            VARIANT_BOOL IsConnect = VARIANT_FALSE;
            if (pNetworkListManager)           
                Result = pNetworkListManager->get_IsConnectedToInternet(&IsConnect);
            if (SUCCEEDED(Result))          
            {
                bOnline = (IsConnect == VARIANT_TRUE) ? true : false;
            }
        }        
        if (pNetworkListManager)           
            pNetworkListManager->Release();
    }   
    if (pUnknown)        
        pUnknown->Release();
    CoUninitialize();
    return bOnline;
}

HANDLE g_hMutex = NULL;
//线程函数
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
    Sleep(1000);
    if (!checkIsNetwork())
    {
        WaitForSingleObject(g_hMutex, INFINITE);  //等待线程同步
        std::cout << "网络已断开" << std::endl;        
        ReleaseMutex(g_hMutex);   //释放互斥量
    }
    else
    {
        WaitForSingleObject(g_hMutex, INFINITE);
        std::cout << "网络正常" << std::endl;
        ReleaseMutex(g_hMutex);

    }
    return 0L;
}

int main()
{
    g_hMutex = CreateMutex(NULL, FALSE, NULL);//创建互斥量
    while (1)
    {
        Sleep(1000);
        //创建一个线程
        HANDLE thread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);

        //关闭线程
        CloseHandle(thread);
    }

    return 0;
}

原文地址:https://blog.csdn.net/qq_31815979/article/details/105112948

原文链接: https://www.cnblogs.com/shenji/p/12934923.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ 判断当前网络是否正常,

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/350112

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午6:06
下一篇 2023年3月2日 上午6:06

相关推荐