繁体   English   中英

检查是否有 TCP/IP 连接以及是 WiFi 还是 3G - Windows Mobile 6.5 - C/C++

[英]Check if there is a TCP/IP connection and if it's WiFi or 3G - Windows Mobile 6.5 - C/C++

我需要在我的 Windows Mobile 6.5 C/C++ 应用程序中检测是否有 TCP/IP 连接,如果有,则检测它是 WiFi 还是 3G。 我怎么能那样做? 我发现了一些 C# 示例,但对于 C/C++ 没有。

任何提示将不胜感激。

TIA,麦可可

这可以使用连接管理器 API。 function 的名称是ConnMgrQueryDetailedStatus 您感兴趣的CONNMGR_CONNECTION_DETAILED_STATUS结构字段是:dwParams、dwType 和dwSubtype。

// TODO: Fill in the structure using ConnMgrQueryDetailedStatus in a loop until it succeeds.

// Check to see if there is an active Wi-Fi connection currently available to ConnMgr.
BOOL IsWiFiAvailable(CONNMGR_CONNECTION_DETAILED_STATUS* ccds)
{
     return ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_SUBTYPE && 
            ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_TYPE &&
            ccds->dwType == CM_CONNTYPE_NIC &&
            ccds->dwSubtype == CM_CONNSUBTYPE_NIC_WIFI;
}


// Check to see if there is an active Wi-Fi connection currently available to ConnMgr.
BOOL Is3GAvailable(CONNMGR_CONNECTION_DETAILED_STATUS* ccds)
{
     // This will return FALSE if you have non 3G GPRS connection available.
     return ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_SUBTYPE && 
            ccds->dwParams & CONNMGRDETAILEDSTATUS_PARAM_TYPE &&
            ccds->dwType == CM_CONNTYPE_CELLULAR_GPRS &&
            ccds->dwSubtype == CM_CONNSUBTYPE_CELLULAR_UMTS;
}

我以前实际上没有这样做过,所以这个答案将是一个有根据的猜测。

我的猜测是,首先你会通过尝试 ping 或解析一些已知良好的远程地址来查看是否有任何连接。 如果可行,您将检查连接管理器 API以找出用于通信的连接。

那时你可能不知道它是 WiFi 还是 3G。 您也许可以使用 ossvcs.dll来推断它是基于无线电类型的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM