簡體   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