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

2021-01-15 19:12

阅读:398

标签:read   known   line   query   同步   void   函数   init   tps   

#include

#include 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

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

标签:read   known   line   query   同步   void   函数   init   tps   

原文地址:https://www.cnblogs.com/shenji/p/12934923.html


评论


亲,登录后才可以留言!