• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            引用自:http://www.sf.org.cn/Article/symbiandev/200509/183.html

            如何尋找和連接到遠程設備

            當一個應用程序連接到遠程設備以便應用其某個服務時,我們需要幾個步驟:首先看看是否有想要與之通信的設備。然后察看所需要的服務是否可用。最后,應用程序需要進行連接,另外可能還需要進行些安全措施

            下面幾個主題將依次介紹相關步驟:

            選擇遠程設備的方法
            如何查詢遠程設備

            如何查詢遠程設備上的服務

            如何同遠程設備連接和傳輸數據

            如何在外連的套接字上應用安全措施

            選擇遠程設備的方法

            一個應用程序能通過下列方法決定哪個遠程設備是他通信的對象:

            ·         固定的連接

            ·         實現存儲的配置

            ·         由用戶選擇

            ·         程序自動決定

            上面每一個都可能由它合適的情況。前兩個方法中,遠端設備的地址只需要簡單的從存儲出取出。而第三種方法則普遍在藍牙UI中提供。

            最后一種程序自動選擇遠程設備中,可能在下列情況中應用:

            ·         為用戶提供可定制的設備選擇UI

            ·         在某些特別情況下選擇設備,比如“選擇最空閑的LAN接入點”

            如何查詢遠程設備
            每個藍牙設備在其硬件中都有唯一的48位地址。一個范圍內基本的設備查詢將返回零或幾個此類地址。

            除了這個地址,藍牙設備也還有一個文本名字顯示給用戶。如果你希望顯示可用設備的列表給用戶,你也要獲取這些名字以便顯示。

            如果底層硬件支持,地址和名字也可以同時被查詢。否則,地址的查詢必須在名字查詢請求發送前完成

            泛化套接字類RhostResolver用來完成地址和設備名的查詢。另外TinquirySockAddr為專門的藍牙套接字地址類,里面封裝了藍牙地址,查詢入口代碼,用來提供相關查詢的服務和設備類。

            獲得遠程設備的地址
            下面步驟用來查詢遠程設備的地址:

            1.    連接到套接字服務器(RSocketServ),然后用RSocketServ::FindProtocol()選擇使用的協議。由于名字和地址的查詢由堆棧的BTLinkManager協議層支持,所以選擇它。

            2.    創建并初始化一個RhostResolver對象。

            3.    設置TinquirySockAddr參數以便查詢:對于地址查詢, KHostResInquiry標志需要通過TInquirySockAddr::SetAction()設置好。

            然后可以通過RHostResolver::GetByAddress()開始查詢。

            如何查詢遠程設備的服務
            一個遠程設備可以有一個或者多個藍牙服務提供者。服務的廣泛指示器可以從設備的類中讀出。這樣可以用來選擇合適的設備圖標現實給用戶。這個設備的類可以在查詢地址后用TInquirySockAddr::MajorClassOfDevice()獲得。

            在特定環境,設備的類提供的粗級別的服務發現并不能滿足對設備的選擇條件。這樣,這樣,服務發現請求可以用來判斷是否為適合的選擇。但只有在必需的時后才應該應用,因為它需要一些額外時間來對每個設備進行SDP請求。SDP請求通過藍牙發現代理API來進行。

            如何同遠程設備連接和傳輸數據
            一旦設備和服務確定了,你就能夠連接到遠程設備并開始使用了

            通過泛化的Symbian OS套接字借口RsocketConnect()函數連接到設備。藍牙套接字可以用L2CAPRFCOMM協議打開。對于一個L2CAP藍牙套接字,端口(port)是用來連接的協議/服務多路復用器 (PSM);對于RFCOMM,端口是服務器頻道。如果這些值不知道,可以通過讀取服務屬性ProtocolDescriptorList來獲得。詳情參見使用藍牙服務發現代理

            你能夠通過套接字使用目標服務期望的格式讀寫數據(AT指令,文本,HTTPPPP等)

            舉例:
            // Assume have a TInquirySockAddr object, addr, with relevant device info

            // Connect an L2CAP socket
            RSocket socket;
            TRequestStatus status;
            User::LeaveIfError(socket.Open(socketServ,KBTAddrFamily,KSockSeqPacket,KL2CAP));
            User::LeaveIfError(socket.Connect(addr,status));
            User::WaitForRequest(status);

            if (status == KErrNone)
                {
                // Write some simple data
                _LIT8(KDataToWrite,"01234");
                socket.Write(KDataToWrite,status);
                User::WaitForRequest(status);
                }

            // Close socket
            socket.Close();

            注意:
            ·         對于RFCOMML2CAP協議,沒有數據可以在Connect() Shutdown() 調用中送出,否則會導致獲得額外數據的錯誤。

            ·         RFCOMM使用流套接字類型(KSockStream)。

            ·         L2CAP使用序列包的套接字類型 (KsockSeqPacket)。

            如何在外連的套接字上應用安全措施
            對于一個外連接(outgoing connection),默認情況下藍牙堆棧不會由具體的安全措施。如果遠程設備需要認證或編碼連接,那堆棧會直接體現到應用程序。

            有時候,本地程序也需要保證認證或編碼連接。可以對RSocket用控制操作(ioctls)來認證(ioctl KHCIAuthRequestIoctl) 或者編碼 (KHCIEncryptIoctl) 連接。

            舉例
            下面的例子就將對認證請求應用了ioctl

            // Assume have an opened L2CAP RSocket object, socket
            socket.Ioctl(KHCIAuthRequestIoctl, status, NULL, KSolBtHCI);
            User::WaitForRequest(status);
            if (status==KErrNone)
                {
                \\ Success...

            ps: 偶也在學習中,如有錯誤請多指教。

            posted on 2006-02-25 05:15 移動開發 閱讀(698) 評論(0)  編輯 收藏 引用
             
            色婷婷综合久久久久中文字幕 | 日韩人妻无码一区二区三区久久| 中文字幕无码久久精品青草| 久久久久久亚洲精品影院| 一本久久知道综合久久| 久久久精品一区二区三区| 亚洲国产成人久久综合一区77| 久久夜色精品国产噜噜噜亚洲AV| 国产精品久久久久久一区二区三区| 青青青青久久精品国产| 精品国产乱码久久久久软件| 久久亚洲春色中文字幕久久久| 久久中文字幕无码专区 | 久久AⅤ人妻少妇嫩草影院| 一本色道久久综合| 国产综合免费精品久久久| 熟妇人妻久久中文字幕| 亚洲欧洲精品成人久久曰影片| 久久精品九九亚洲精品天堂| 国产aⅴ激情无码久久| 久久人妻少妇嫩草AV无码蜜桃| 欧美丰满熟妇BBB久久久| 久久久久亚洲国产| 色诱久久av| 国产精品热久久毛片| 午夜不卡888久久| 久久香蕉超碰97国产精品| 一本一本久久aa综合精品| 久久久久亚洲AV无码专区首JN| 久久久久亚洲爆乳少妇无| 激情久久久久久久久久| 精品久久久久久无码国产| 久久se这里只有精品| 久久久久99精品成人片| 久久亚洲av无码精品浪潮| 日韩欧美亚洲综合久久影院Ds| 久久青青草原精品国产不卡| 亚洲国产高清精品线久久 | 久久亚洲私人国产精品| 粉嫩小泬无遮挡久久久久久| 亚洲国产另类久久久精品黑人 |