我需要在我的Windows Mobile 6.5 C/C++應用程序中檢測是否存在TCP/IP連接,如果是,然後檢測它是WiFi還是3G。我怎麼能這樣做?我找到了一些C#示例,但沒有用於C/C++。檢查是否有TCP/IP連接,以及它是WiFi還是3G - Windows Mobile 6.5 - C/C++
任何提示將不勝感激。
TIA, MeCoco
我需要在我的Windows Mobile 6.5 C/C++應用程序中檢測是否存在TCP/IP連接,如果是,然後檢測它是WiFi還是3G。我怎麼能這樣做?我找到了一些C#示例,但沒有用於C/C++。檢查是否有TCP/IP連接,以及它是WiFi還是3G - Windows Mobile 6.5 - C/C++
任何提示將不勝感激。
TIA, MeCoco
我沒有實際做過,所以這個答案將是一個受過教育的猜測。
我的猜測是,首先通過嘗試ping或解析某個已知良好的遠程地址來查看是否有任何連接。如果可行,你可以通過Connection Manager APIs查詢通訊使用的連接。
那時你可能不知道它是WiFi還是3G。儘管如此,你也許可以通過use ossvcs.dll來推斷它是基於無線電類型的。
對於Pocket PC 200x和早於Windows Mobile 5.0的版本,可以使用類似於使用無線電接口層或OSSVCS.DLL的方法。對於Windows Mobile 5.0和更高版本,有一個名爲ConnMgrQueryDetailedStatus的連接管理器功能,它可以枚舉現有的ConnMgr連接並告訴你它是3G,EDGE,Wi-Fi,以太網,DTPT,GPRS,CDMA,EVDO等。 –
這可以使用連接管理器API。該函數的名稱是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;
}
如果您共享這些C#示例的鏈接,那麼我們可能會成功提供相應的本地解決方案。 –