MOBILE网络连接【转】

本文介绍了一种检测网络是否可用的方法,通过使用Windows CE工具包中的API实现网络连接状态的检查,包括连接建立、状态查询及代理配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断网络是否可用:

具体可以参照: Windows CE Tools/wce500/Windows Mobile 5.0 Pocket PC SDK/Samples/CPP/Mfc/CMHELPER

HRESULT IsAvailableNetWork( LPCSTR strPathUrl , BOOL bProxy)

{

    GUID        guidNetWork;

    HANDLE  hConn;

 

    //通过目标网络求出GUID

    ConnMgrMapURL(strPathUrl , &guidNetWork, 0);

 

    CONNMGR_CONNECTIONINFO ci = { 0 };
    ci.cbSize           = sizeof(ci);
    ci.dwParams    = CONNMGR_PARAM_GUIDDESTNET
                               | CONNMGR_PARAM_MAXCONNLATENCY;
    ci.dwFlags        = bProxy?CONNMGR_FLAG_PROXY_HTTP:0;
    ci.ulMaxConnLatency = 4000;         // 4 second
    ci.bDisabled     = TRUE;
    ci.dwPriority    = CONNMGR_PRIORITY_USERINTERACTIVE;
    ci.guidDestNet = guidNetWork;

    

    //创建一个连接请求

    if( SUCCEEDED( hr = ConnMgrEstablishConnection(&ci, &hConn ) )

    {

        DWORD dwResult = WaitForSingleObject(hConn, 400);

        switch (dwResult)
        {
              case WAIT_OBJECT_0:
              {
                    DWORD dwStatus;

                    //当前连接状态
                    if( SUCCEEDED(ConnMgrConnectionStatus(hConn, &dwStatus)) && 

                                                ( (dwStatus ==CONNMGR_STATUS_CONNECTED) ||

                                                (dwStatus == CONNMGR_STATUS_CONNECTIONDISABLED) ))
                        {
                            hr=S_OK;

                            PROXY_CONFIG    ProxyInfo;

                            ZeroMemory(&ProxyInfo, sizeof(ProxyInfo));
                            ProxyInfo.dwType = CONNMGR_FLAG_PROXY_HTTP;

 

                            //功能交换信息与连接规划或连接服务提供商。
                            if (SUCCEEDED(ConnMgrProviderMessage(   hConn, &IID_ConnPrv_IProxyExtension,
                                                NULL, 0, 0,  (PBYTE)&ProxyInfo, sizeof(ProxyInfo))))
                            {
                                    if (ProxyInfo.dwType == CONNMGR_FLAG_PROXY_HTTP)
                                    {
                                             // SECURITY: Zero out the username/password from memory.
                                       }
                               }

                            

                        }
                        else
                        {
                            hr=S_FALSE;
                        }
                        break;
                    }

                    case WAIT_TIMEOUT:
                        hr=E_FAIL;
                        break;
                }

                //删除连接请求
                ConnMgrReleaseConnection(hConn, FALSE);

    }

 

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值