欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙實(shí)戰(zhàn)開發(fā):【分布式軟總線組件】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-15 18:00 ? 次閱讀

簡介

現(xiàn)實(shí)中多設(shè)備間通信方式多種多樣(WIFI、藍(lán)牙等),不同的通信方式使用差異大,導(dǎo)致通信問題多;同時還面臨設(shè)備間通信鏈路的融合共享和沖突無法處理等挑戰(zhàn)。分布式軟總線實(shí)現(xiàn)近場設(shè)備間統(tǒng)一的分布式通信管理能力,提供不區(qū)分鏈路的設(shè)備間發(fā)現(xiàn)連接、組網(wǎng)和傳輸能力,主要功能如下:

  • 發(fā)現(xiàn)連接:提供基于Wifi、藍(lán)牙等通信方式的設(shè)備發(fā)現(xiàn)連接能力。
  • 設(shè)備組網(wǎng):提供統(tǒng)一的設(shè)備組網(wǎng)和拓?fù)涔芾砟芰?,為?shù)據(jù)傳輸提供已組網(wǎng)設(shè)備信息
  • 數(shù)據(jù)傳輸:提供數(shù)據(jù)傳輸通道,支持消息、字節(jié)、流、文件的數(shù)據(jù)傳輸能力。

業(yè)務(wù)方通過使用分布式軟總線提供的API實(shí)現(xiàn)設(shè)備間的高速通信,不用關(guān)心通信細(xì)節(jié),進(jìn)而實(shí)現(xiàn)業(yè)務(wù)平臺的高效部署與運(yùn)行能力。

系統(tǒng)架構(gòu)


圖 1 分布式軟總線組件架構(gòu)圖

約束

  • 組網(wǎng)設(shè)備需在同一局域網(wǎng)中 或者 距離相近的近場設(shè)備間。
  • 組網(wǎng)之前,需先完成設(shè)備綁定,綁定流程參見安全子系統(tǒng)中說明。
  • 傳輸完成數(shù)據(jù)收發(fā)之后,業(yè)務(wù)要主動關(guān)閉會話,釋放資源。

說明

使用說明

須知: 使用跨設(shè)備通信時,必須添加權(quán)限ohos.permission.DISTRIBUTED_DATASYNCohos.permission.DISTRIBUTED_SOFTBUS_CENTER,該權(quán)限類型為 dangerous 。

設(shè)備主動發(fā)現(xiàn)手機(jī)時,手機(jī)需打開超級終端的允許被“附近設(shè)備”發(fā)現(xiàn)開關(guān)(設(shè)置-超級終端-我的設(shè)備-允許被發(fā)現(xiàn)-附近設(shè)備),才能被設(shè)備發(fā)現(xiàn)。

1、發(fā)現(xiàn)

  • 發(fā)布流程
  1. 上層應(yīng)用需要對外發(fā)布自身能力時,調(diào)用服務(wù)發(fā)布接口發(fā)布自身能力。
    // 發(fā)布回調(diào)
    typedef struct {
        /** Callback for publish result */
        void (*OnPublishResult)(int publishId, PublishResult reason);
    } IPublishCb;
    
    // 發(fā)布服務(wù)
    int32_t PublishLNN(const char *pkgName, const PublishInfo *info, const IPublishCb *cb);
    
  2. 上層應(yīng)用不再需要對外發(fā)布自身能力時,調(diào)用StopPublishLNN接口注銷服務(wù)。
    // 注銷服務(wù)
    int32_t StopPublishLNN(const char *pkgName, int32_t publishId);
    
  • 發(fā)現(xiàn)流程
  1. 上層應(yīng)用需要發(fā)現(xiàn)特定能力設(shè)備時,調(diào)用發(fā)現(xiàn)接口啟動發(fā)現(xiàn)。
    // 發(fā)現(xiàn)回調(diào)
    typedef struct {
        /** Callback that is invoked when a device is found */
        void (*OnDeviceFound)(const DeviceInfo *device);
        /** Callback for a subscription result */
        void (*OnDiscoverResult)(int32_t refreshId, RefreshResult reason);
    } IRefreshCallback;
    
    // 發(fā)現(xiàn)服務(wù)
    int32_t RefreshLNN(const char *pkgName, const SubscribeInfo *info, const IRefreshCallback *cb);
    
  2. 當(dāng)軟總線發(fā)現(xiàn)到設(shè)備時,通過回調(diào)接口通知業(yè)務(wù)所發(fā)現(xiàn)的設(shè)備信息。
  3. 上層應(yīng)用不再需要發(fā)現(xiàn)時,調(diào)用StopRefreshLNN接口停止設(shè)備發(fā)現(xiàn)。
    // 停止發(fā)現(xiàn)
    int32_t StopRefreshLNN(const char *pkgName, int32_t refreshId);
    

2、組網(wǎng)

  1. 發(fā)起組網(wǎng)請求,攜帶組網(wǎng)連接地址信息,并且提供組網(wǎng)執(zhí)行結(jié)果回調(diào)函數(shù)。
    // 組網(wǎng)連接地址
    typedef struct {
        ConnectionAddrType type;
        union {
            struct BrAddr {
                char brMac[BT_MAC_LEN];
            } br;
            struct BleAddr {
                char bleMac[BT_MAC_LEN];
                uint8_t udidHash[UDID_HASH_LEN];
            } ble;
            struct IpAddr {
                char ip[IP_STR_MAX_LEN];
                uint16_t port; 
            } ip;
        } info;
        char peerUid[MAX_ACCOUNT_HASH_LEN];
    } ConnectionAddr;
    
    // 組網(wǎng)連接地址類型
    typedef enum {
        CONNECTION_ADDR_WLAN = 0,
        CONNECTION_ADDR_BR,
        CONNECTION_ADDR_BLE,
        CONNECTION_ADDR_ETH,
        CONNECTION_ADDR_MAX
    } ConnectionAddrType;
    
    // 組網(wǎng)請求執(zhí)行結(jié)果回調(diào)
    typedef void (*OnJoinLNNResult)(ConnectionAddr *addr, const char *networkId, int32_t retCode);
    
    // 發(fā)起組網(wǎng)請求
    int32_t JoinLNN(const char *pkgName, ConnectionAddr *target, OnJoinLNNResult cb);
    
  2. 等待組網(wǎng)結(jié)果,JoinLNN()返回成功表示軟總線接受了組網(wǎng)請求,組網(wǎng)結(jié)果通過回調(diào)函數(shù)通知業(yè)務(wù);組網(wǎng)回調(diào)函數(shù)中addr參數(shù)內(nèi)容和JoinLNN()的入?yún)⒒ハ嗥ヅ?;retCode如果為0,表示組網(wǎng)成功,此時networkId為有效值,后續(xù)傳輸、退網(wǎng)等接口均需使用該參數(shù);retCode如果不為0,表示組網(wǎng)失敗,此時networkId為無效值。
  3. 使用傳輸相關(guān)接口進(jìn)行數(shù)據(jù)傳輸。
  4. 發(fā)送退網(wǎng)請求,攜帶組網(wǎng)成功后返回的networkId,并且提供退網(wǎng)執(zhí)行結(jié)果回調(diào)。
    // 退網(wǎng)執(zhí)行結(jié)果回調(diào)
    typedef void (*OnLeaveLNNResult)(const char *networkId, int32_t retCode);
    
    // 退網(wǎng)請求
    int32_t LeaveLNN(const char *pkgName, const char *networkId, OnLeaveLNNResult cb);
    
  5. 等待退網(wǎng)完成,OnLeaveLNNResult()的networkId和退網(wǎng)請求接口中的networkId互相匹配;retCode為0表示退網(wǎng)成功,否則退網(wǎng)失敗。退網(wǎng)成功后,networkId變?yōu)闊o效值,后續(xù)不應(yīng)該被繼續(xù)使用。
  6. 使用節(jié)點(diǎn)(即設(shè)備)注冊和注銷接口,監(jiān)聽網(wǎng)絡(luò)中節(jié)點(diǎn)狀態(tài)變化等事件。
    // 事件掩碼
    #define EVENT_NODE_STATE_ONLINE 0x1
    #define EVENT_NODE_STATE_OFFLINE 0x02
    #define EVENT_NODE_STATE_INFO_CHANGED 0x04
    #define EVENT_NODE_STATUS_CHANGED 0x08
    #define EVENT_NODE_STATE_MASK 0xF
    
    // 節(jié)點(diǎn)信息
    typedef struct {
        char networkId[NETWORK_ID_BUF_LEN];
        char deviceName[DEVICE_NAME_BUF_LEN];
        uint16_t deviceTypeId;
    } NodeBasicInfo;
    
    // 節(jié)點(diǎn)狀態(tài)事件回調(diào)
    typedef struct {
        uint32_t events; // 組網(wǎng)事件掩碼
        void (*onNodeOnline)(NodeBasicInfo *info);   // 節(jié)點(diǎn)上線事件回調(diào)
        void (*onNodeOffline)(NodeBasicInfo *info);  // 節(jié)點(diǎn)下線事件回調(diào)
        void (*onNodeBasicInfoChanged)(NodeBasicInfoType type, NodeBasicInfo *info); // 節(jié)點(diǎn)信息變化事件回調(diào)
        void (*onNodeStatusChanged)(NodeStatusType type, NodeStatus *status); // 設(shè)備運(yùn)行狀態(tài)變化事件回調(diào)
    } INodeStateCb;
    
    //  注冊節(jié)點(diǎn)狀態(tài)事件回調(diào)
    int32_t RegNodeDeviceStateCb(const char *pkgName, INodeStateCb *callback);
    
    // 注銷節(jié)點(diǎn)狀態(tài)事件回調(diào)
    int32_t UnregNodeDeviceStateCb(INodeStateCb *callback);
    

3、傳輸

  1. 創(chuàng)建Socket。
    typedef struct {
        char *name;                 // 本端Socket名稱
        char *peerName;             // 對端Socket名稱
        char *peerNetworkId;        // 對端Socket的網(wǎng)絡(luò)ID
        char *pkgName;              // 調(diào)用者包名
        TransDataType dataType;     // 傳輸?shù)臄?shù)據(jù)類型,需要與發(fā)送方法一致
    } SocketInfo;
    
    // 創(chuàng)建Socket
    int32_t Socket(SocketInfo info);
    
  2. 服務(wù)端啟動監(jiān)聽,客戶端進(jìn)行綁定。
    // Socket回調(diào)函數(shù)
    typedef struct {
        void (*OnBind)(int32_t socket, PeerSocketInfo info);
        void (*OnShutdown)(int32_t socket, ShutdownReason reason);
        void (*OnBytes)(int32_t socket, const void *data, uint32_t dataLen);
        void (*OnMessage)(int32_t socket, const void *data, uint32_t dataLen);
        void (*OnStream)(int32_t socket, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param);
        void (*OnFile)(int32_t socket, FileEvent *event);
        void (*OnQos)(int32_t socket, QoSEvent eventId, const QosTV *qos, uint32_t qosCount);
    } ISocketListener;
    
    typedef enum {
        QOS_TYPE_MIN_BW,            // 最小帶寬
        QOS_TYPE_MAX_LATENCY,       // 最大建鏈時延
        QOS_TYPE_MIN_LATENCY,       // 最小建鏈時延
        QOS_TYPE_MAX_WAIT_TIMEOUT,  // 最大超時時間
        QOS_TYPE_MAX_BUFFER,        // 最大緩存
        QOS_TYPE_FIRST_PACKAGE,     // 首包大小
        QOS_TYPE_MAX_IDLE_TIMEOUT,  // 最大空閑時間
        QOS_TYPE_TRANS_RELIABILITY, // 傳輸可靠性
        QOS_TYPE_BUTT,
    } QosType;
    
    typedef struct {
        QosType qos;
        int32_t value;
    } QosTV;
    
    // 監(jiān)聽Socket,由服務(wù)端開啟。
    int32_t Listen(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener);
    
    // 綁定Socket,由客戶端開啟。
    int32_t Bind(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener);
    
  3. 通過Socket向?qū)Χ嗽O(shè)備發(fā)送數(shù)據(jù)。
    // 發(fā)送字節(jié)數(shù)據(jù)
    int32_t SendBytes(int32_t socket, const void *data, uint32_t len);
    // 發(fā)送消息數(shù)據(jù)
    int32_t SendMessage(int32_t socket, const void *data, uint32_t len);
    // 發(fā)送流數(shù)據(jù)# 分布式軟總線組件
    int32_t SendStream(int32_t socket, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param);
    // 發(fā)送文件
    int32_t SendFile(int32_t socket, const char *sFileList[], const char *dFileList[], uint32_t fileCnt);
    
  4. 關(guān)閉Socket。
    // 關(guān)閉Socket
    void Shutdown(int32_t socket);
    

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2905

    瀏覽量

    88447
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    925

    瀏覽量

    74624
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2397

    瀏覽量

    43098
收藏 人收藏

    評論

    相關(guān)推薦

    分布式日志追蹤ID實(shí)戰(zhàn)

    作者:京東物流 張小龍 本文通過介紹分布式應(yīng)用下各個場景的全局日志ID透傳思路,以及介紹分布式日志追蹤ID簡單實(shí)現(xiàn)原理和實(shí)戰(zhàn)效果,從而達(dá)到通過提高日志查詢排查問題的效率。 背景 開發(fā)
    的頭像 發(fā)表于 01-20 10:16 ?339次閱讀

    AIGC入門及鴻蒙入門

    JDK、配置SDK等。 3. 開發(fā)實(shí)踐: 學(xué)習(xí)鴻蒙系統(tǒng)的架構(gòu)和API,了解其組件化、分布式等特性。 通過官方文檔和社區(qū)資源,學(xué)習(xí)和掌握鴻蒙應(yīng)
    發(fā)表于 01-13 10:32

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)

    設(shè)備文件訪問實(shí)現(xiàn)文件的遷移,難以獲取文件同步完成的時間。為了保證更高的成功率,文件的遷移不建議繼續(xù)通過該方式實(shí)現(xiàn),推薦使用分布式數(shù)據(jù)對象攜帶資產(chǎn)的方式。開發(fā)者此前通過跨設(shè)備文件訪問實(shí)現(xiàn)的文件遷移依然生效
    發(fā)表于 12-24 09:40

    名單公布!【書籍評測活動NO.53】鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)

    的底層設(shè)計(jì)邏輯出發(fā),針對不同關(guān)鍵子系統(tǒng)的目標(biāo)功能和實(shí)現(xiàn)路徑做實(shí)際分析解讀,幫助開發(fā)者理解鴻蒙操作系統(tǒng)的底層邏輯,開發(fā)更適合系統(tǒng)邏輯的架構(gòu)代碼。 以分布式
    發(fā)表于 12-16 15:10

    鴻蒙開發(fā)管理:ohos.account.distributedAccount 分布式帳號管理

    獲取分布式帳號單實(shí)例對象。
    的頭像 發(fā)表于 07-08 10:03 ?314次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>管理:ohos.account.distributedAccount <b class='flag-5'>分布式</b>帳號管理

    鴻蒙ArkTS聲明開發(fā):跨平臺支持列表【分布式遷移標(biāo)識】 通用屬性

    組件分布式遷移標(biāo)識,指明了該組件分布式遷移場景下可以將特定狀態(tài)恢復(fù)到對端設(shè)備。
    的頭像 發(fā)表于 06-07 21:15 ?450次閱讀

    鴻蒙開發(fā)接口數(shù)據(jù)管理:【@ohos.data.distributedData (分布式數(shù)據(jù)管理)】

    分布式數(shù)據(jù)管理為應(yīng)用程序提供不同設(shè)備間數(shù)據(jù)庫的分布式協(xié)同能力。通過調(diào)用分布式數(shù)據(jù)各個接口,應(yīng)用程序可將數(shù)據(jù)保存到分布式數(shù)據(jù)庫中,并可對分布式
    的頭像 發(fā)表于 06-07 09:30 ?1090次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>接口數(shù)據(jù)管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b>數(shù)據(jù)管理)】

    HarmonyOS開發(fā)實(shí)例:【分布式數(shù)據(jù)服務(wù)】

    分布式數(shù)據(jù)服務(wù)(Distributed Data Service,DDS)為應(yīng)用程序提供不同設(shè)備間數(shù)據(jù)分布式的能力。
    的頭像 發(fā)表于 04-18 10:18 ?804次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>實(shí)例:【<b class='flag-5'>分布式</b>數(shù)據(jù)服務(wù)】

    HarmonyOS開發(fā)實(shí)例:【分布式新聞客戶端】

    基于柵格布局、設(shè)備管理和多端協(xié)同,實(shí)現(xiàn)一次開發(fā),多端部署的分布式新聞客戶端頁面。
    的頭像 發(fā)表于 04-17 15:57 ?946次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>實(shí)例:【<b class='flag-5'>分布式</b>新聞客戶端】

    HarmonyOS開發(fā)實(shí)例:【分布式郵件】

    基于TS擴(kuò)展的聲明開發(fā)范式編程語言編寫的一個分布式郵件系統(tǒng),可以由一臺設(shè)備拉起另一臺設(shè)備,每次改動郵件內(nèi)容,都會同步更新兩臺設(shè)備的信息
    的頭像 發(fā)表于 04-17 10:29 ?815次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>實(shí)例:【<b class='flag-5'>分布式</b>郵件】

    HarmonyOS實(shí)戰(zhàn)案例:【分布式賬本】

    Demo基于Open Harmony系統(tǒng)使用ETS語言進(jìn)行編寫,本Demo主要通過設(shè)備認(rèn)證、分布式拉起、分布式數(shù)據(jù)管理等功能來實(shí)現(xiàn)。
    的頭像 發(fā)表于 04-12 16:40 ?1402次閱讀
    HarmonyOS<b class='flag-5'>實(shí)戰(zhàn)</b>案例:【<b class='flag-5'>分布式</b>賬本】

    OpenHarmony南向開發(fā)案例:【分布式畫板】

    使用OpenHarmony3.1-Release開發(fā)的應(yīng)用。通過OpenHarmony的分布式技術(shù),使多人能夠一起畫畫。
    的頭像 發(fā)表于 04-12 14:40 ?1108次閱讀
    OpenHarmony南向<b class='flag-5'>開發(fā)</b>案例:【<b class='flag-5'>分布式</b>畫板】

    鴻蒙HarmonyOS開發(fā)實(shí)戰(zhàn):【分布式音樂播放】

    本示例使用fileIo獲取指定音頻文件,并通過AudioPlayer完成了音樂的播放完成了基本的音樂播放、暫停、上一曲、下一曲功能;并使用DeviceManager完成了分布式設(shè)備列表的顯示和分布式能力完成了音樂播放狀態(tài)的跨設(shè)備分享。
    的頭像 發(fā)表于 04-10 17:51 ?955次閱讀
    <b class='flag-5'>鴻蒙</b>HarmonyOS<b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:【<b class='flag-5'>分布式</b>音樂播放】

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】

    兩位前阿里高級研發(fā)工程師聯(lián)合打造的 《鴻蒙NEXT星河版OpenHarmony開發(fā)文檔》 里面內(nèi)容包含了(ArkTS、ArkUI開發(fā)組件、Stage模型、多端部署、
    發(fā)表于 03-03 21:29

    HarmonyOS開發(fā)技術(shù)全面分析

    態(tài)的終端設(shè)備對于操作系統(tǒng)的要求。 技術(shù)特性 硬件互助,資源共享 分布式總線 分布式總線是多種
    發(fā)表于 02-21 16:31