Bluetooth 查詢遠端裝置上的服務

2021-08-22 09:41:18 字數 1982 閱讀 5062

在程式中可以使用一下這些標準winsock程式設計元素來查詢遠端裝置上的服務:

在查詢遠端裝置上的服務效能之前,必須先知道一下資訊:

typedef ulonglong bt_addr, *pbt_addr, bt_addr, *pbt_addr;

注意為了使清晰起見,文中忽略了錯誤處理。

在遠端藍芽裝置上執行服務查詢

wsadata wsd;

wsastartup (makeword(1,0), &wsd);

通過設定wsaqueryset結構體來指定搜尋引數。

wsaqueryset wsaq;

memset (&wsaq, 0, sizeof(wsaq));

wsaq.dwsize = sizeof(wsaq);

wsaq.dwnamespace = ns_bth;

wsaq.lpblob = &blob;

wsaq.lpcsabuffer = &csai;

設定dwnamespace成員為ns_bth將查詢指定為藍芽查詢。

呼叫wsalookupservicebegin函式初始化搜尋,將第一步中建立的wsaqueryset變數傳遞給pqueryset

引數來指定搜尋標準

int iret = wsalookupservicebegin (&wsaq, 0, &hlookup);

將dwflags

引數設定為0來在遠端裝置上執行乙個服務查詢,wsalookupservicebegin返回乙個控制代碼到hlookup

引數中。

注意將dwflags引數設定為lup_containers, 呼叫wsalookupservicebegin將執行乙個裝置查詢。詳情參見「使用winsock搜尋藍芽裝置」。

要返回在遠端裝置上所找到的服務的相關資料,使用從wsalookupservicebegin返回的控制代碼呼叫wsalookupservicenext函式。

char buf[5000];

lpwsaqueryset pwsaresults = (lpwsaqueryset) buf;

dword dwsize= sizeof(buf);

memset(pwsaresults,0,sizeof(wsaqueryset));

pwsaresults->dwsize = sizeof(wsaqueryset);

pwsaresults->dwnamespace = ns_bth;

pwsaresults->lpblob = null;

iret = wsalookupservicenext (hlookup, 0, &dwsize, pwsaresults);

wsalookupservicenext返回了乙個指向wsaqueryset的指標,它包含了lpblob成員裡的服務資料的引用。這個成員指向乙個blob結構體,它包含了由wsalookupservicenext一次性返回的二進位制資料。 windows ce提供了com介面,你可以使用它們來分析服務資料。詳情參見使用com介面分析sdp記錄

. 呼叫wsalookupserviceend函式來結束裝置搜尋。這個函式將釋放由wsalookupservicebegin建立的lookup控制代碼。

wsalookupserviceend(hlookup);

要結束對winsock服務的使用,呼叫wsacleanup函式。在程式中對每個成功呼叫的wsastartup都必須對應地呼叫wsacleanup。

EVC遠端裝置連線

說明 測試機如下配置 已進行ip連線,用ping命令,彼此正常 一 wince平台管理器配置 1 開啟evc編輯器,單擊選單 tools 下的 configure platform manger 選項,開啟 配置連線視窗 2 在windows ce net default platform選項下新增...

EVC遠端裝置連線

說明 測試機如下配置 已進行ip連線,用ping命令,彼此正常 一 wince平台管理器配置 1 開啟evc編輯器,單擊選單 tools 下的 configure platform manger 選項,開啟 配置連線視窗 2 在windows ce net default platform選項下新增...

華為裝置遠端登入設定

一 tenlen方式 1.直接配置密碼 ar1 user inte ce vty 0 4 進入vty ar1 ui vty0 4 authentication mode password 設定連線方式 please configure the login password maximum lengt...