freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

20xx年mqttv31協(xié)議規(guī)范(中文版)-文庫吧資料

2025-01-29 11:35本頁面
  

【正文】 S 規(guī)則,如果某個(gè)客戶端沒有發(fā)布 PUBLISH 消息的授權(quán),這個(gè)客戶端不會(huì)被告知。 值得注意的是,如果一個(gè)服務(wù)器實(shí)現(xiàn)對(duì)某個(gè)客戶端發(fā)送的一個(gè) PUBLISH 消息不允許授權(quán),它沒有辦法通知客戶端。如果是訂閱者客戶端收到 PUBLISH 消息,則此時(shí)所有相關(guān)部分就是指客戶端上等待服務(wù)器消息的各個(gè)應(yīng)用。 QoS 2 將消息持久化存儲(chǔ),先不將消息發(fā)送給所有相關(guān)的部分,而是先回復(fù) PUBREC 消息給發(fā)送者。 QoS 0 僅僅將消息發(fā)送給所有相關(guān)的部分。 動(dòng)作( Action) PUBLISH 消息可以由發(fā)布者客戶端發(fā)給服務(wù)器,也可以由服務(wù)器發(fā)給訂閱者客戶端。 回復(fù)( Response) 對(duì) PUBLISH 消息的回復(fù)取決于 QoS 級(jí)別。固定頭部中的剩余長(zhǎng)度字段的值包括可變頭部和有效載荷。 有效載荷( Payload) 包含要發(fā)的消息的數(shù)據(jù)。 下表是一個(gè) PUBLISH 消息例子的可變頭部。 消息 ID 當(dāng)消息的 QoS 級(jí)別為 1 或 2 時(shí)使用。 不允許出現(xiàn)主題通配符字符。字段自身長(zhǎng)度為 14 字節(jié)。詳見 RETAIN。 RETAIN 標(biāo)志 設(shè)為 0。表示該消息是第一次發(fā)送。詳見 交付質(zhì)量級(jí)別和消息流 。 固定頭部( Fixed header) 固定頭 部的格式如下表所示。 當(dāng)客戶端訂閱了一個(gè)或多個(gè)主題,屬于這些主題的所有消息都將通過服務(wù)器發(fā)送相應(yīng) PUBLISH 消息給客戶端。主題名是一個(gè)層次性的空間,它將訂閱者感興趣的信息資源進(jìn)行分類。 PUBLISH 發(fā)布消息 當(dāng)客戶端想發(fā)布消息給感興趣的訂閱者時(shí),客戶端將發(fā)送一條 PUBLISH 消息給服務(wù)器。 如果客戶端 ID 的長(zhǎng)度不在 123 字節(jié)之間,服務(wù)器則會(huì)發(fā)送返回碼 2(標(biāo)識(shí)符被拒絕)。 可變頭部( Variable header) 可變頭部的格式如下表所示。 固定頭部( Fixed header) 固定頭部的格式如下表所示。如果服務(wù)器可以從 CONNECT 消息中識(shí)別并且明確客戶端使用了一個(gè)不合法的協(xié)議,服務(wù)器可以嘗試在斷開連接前回復(fù)一個(gè) CONNACK 消息,告知客戶端 “Connection Refused: unacceptable protocol version”。 如果嘗試連接的客戶端 ID 在服務(wù)器中已經(jīng)存在,則服務(wù)器會(huì)斷開 “舊 ”的客戶端并與新的客戶端完成連接操作。然后建立新的 TCP/IP 連接,并發(fā)送 CONNECT 消息以重起會(huì)話。 如果在 TCP/IP連接建立后的一段合理時(shí)間內(nèi)服務(wù)器沒有收到客戶端發(fā)送的 CONNECT 消息,則服務(wù)器應(yīng)該關(guān)閉這個(gè)連接。這是合法的,連接應(yīng)該繼續(xù)進(jìn)行。 值得注意的是,為了與 MQTT V3 版本協(xié)議兼容( V3 中不支持用戶名密碼), 固定頭部中的剩余長(zhǎng)度字段的優(yōu)先級(jí)應(yīng)該高于密碼標(biāo)志。密碼字段用于認(rèn)證,對(duì)應(yīng)于連接的用戶名。這是合法的,連接應(yīng)該繼續(xù)進(jìn)行。 值得注意的是,為了與 MQTT V3 版本協(xié)議兼容( V3 中不支持用戶名密碼), 固定頭部中的剩余長(zhǎng)度字段的優(yōu)先級(jí)應(yīng)該高于用戶名標(biāo)志。用戶名字段用于認(rèn)證,標(biāo)明了連接的用戶的名字。因而,消息必須只包含 7bits ASCII字符。當(dāng)然,消息內(nèi)容可以為空(消息長(zhǎng)度為 0,但該字符串仍包含 2 個(gè)字節(jié)以記錄其長(zhǎng)度為 0)。 Will 消息(內(nèi)容) 如果 Will 標(biāo)志被置位,則 Will 消息將是有效載荷中的下一個(gè)字符串。 Will 消息將會(huì)發(fā)送給Will 主題。如果發(fā)送的 CONNECT 消息中客戶端 ID 的長(zhǎng)度大于 23個(gè)字符,則服務(wù)器會(huì)回復(fù)一個(gè)返回碼值為 2(標(biāo)識(shí)符被拒絕)的 CONNACK 消 息。客戶端 ID(Client ID)的長(zhǎng)度為 1 至 23個(gè)字符,服務(wù)器根據(jù)客戶端 ID 可以指定到唯一的客戶端。 Will 消息 ? Will標(biāo)志置位( 1) ? Will QoS 字段值為 1 ? Will RETAIN 標(biāo)志不置位( 0) 有效載荷( Payload) CONNECT 消息的有效載荷根據(jù)可變頭部中各標(biāo)志位的置位情況,包含一個(gè)或多個(gè) UTF8編碼字符串。 Clean session 標(biāo)志 置位( 1)。 其中, 用戶名標(biāo)志 置位( 1)。剩余長(zhǎng)度字段自身的長(zhǎng)度可能大于 1 個(gè)字節(jié)。 DUP、 QoS 以及 RETAIN 標(biāo)志在 CONNECT 消息中沒有被使用到。 3. 命令消息( Command messages) CONNECT 客戶端請(qǐng)求連接服務(wù)器 當(dāng)客戶端與服務(wù)器的 TCP/IP 套接字連接建立起來之后,必須發(fā)送一個(gè) CONNECT 消息流來建立一個(gè)協(xié)議級(jí)別的會(huì)話。 Java 中的 writeUTF() 和 readUTF() 數(shù)據(jù)流方法也使用這種格式。 字符串長(zhǎng)度表示所有字符經(jīng)過 UTF8編碼后的字節(jié)數(shù),而不是字符串中字符的個(gè)數(shù)。 MQTT 和 UTF8( MQTT and UTF8) UTF8 是一種針對(duì) Unicode 的可變長(zhǎng)度字符編碼,它優(yōu)化了 ASCII字符集的編碼,以支持基于文本的通信。 不要使用值為 0 的消息 ID??蛻舳嗽诎l(fā)送一個(gè)消息 ID 為 1 的 PUBLISH 消息的同時(shí)也有可能收到來自服務(wù)器的消息 ID 為 1 的 PUBLISH 消息。它通常是逐個(gè)消息遞增的,但不強(qiáng)制如此。更多信息可參見 交付質(zhì)量級(jí)別和消息流 。 消息標(biāo)識(shí)符( Message Identifiers) 消息標(biāo)識(shí)符用于以下 MQTT 消息的可變頭部中: PUBLISH, PUBACK, PUBREC, PUBREL,PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK。 如果你想要對(duì)有效載荷數(shù)據(jù)進(jìn)行壓縮,你必須自己在有效載荷里定義合適的標(biāo)志來處理壓縮事宜。 PUBLISH 該有效載荷只包含應(yīng)用特定的數(shù)據(jù)。它們是服務(wù)器管理員允許授權(quán)給客戶端訂閱的各個(gè)主題的 QoS 級(jí)別。這些字符串都是 UTF編碼的。其中只有第一項(xiàng)是必選的,其余的取決于可變消息頭部中的標(biāo)志置位情況。 有效載荷( Payload) 以下類型的 MQTT 命令消息擁有一個(gè)有效載荷: CONNECT 該有效載荷包含了一個(gè)或多個(gè) UTF8編碼字符串。更多信息參見 MQTT 和 UTF8。訂閱者使用主題名來決定他們要從哪些信息通道接收消息。 主題名( Topic name) 主題名用于 PUBLISH 消息的可變頭部中。這些值的含義如下表所示。 連接返回碼( Connect return code) 連接返回碼用于 CONNACK 消息的可變頭部中。 ?;钣?jì)時(shí)器的格式如下表所示。實(shí)際設(shè)定的值由特定應(yīng)用決定,不過通常它的值都設(shè)為數(shù)分鐘,最大值接近 18 個(gè)小時(shí)。 如果客戶端在發(fā)送 PINGQ 后的一個(gè)?;顣r(shí)間內(nèi)沒有收到服務(wù)器發(fā)來的 PINGRESP 消息,則客戶端可以關(guān)閉 TCP/IP 套接字連接。這個(gè)動(dòng)作不影響客戶端的訂閱。如果這期間沒有業(yè)務(wù)相關(guān)的消息要發(fā)送,客戶端則發(fā)送一個(gè) PINGREQ 消息給服務(wù)器,相應(yīng)地服務(wù)器返回一個(gè) PINGRESQ 消息給客戶端。它使得服務(wù)器不需要等待漫長(zhǎng)的 TCP/IP 超時(shí)就可以檢測(cè)與客戶端的網(wǎng)絡(luò)連接是否斷開。 ?;钣?jì)時(shí)器( Keep Alive timer) ?;钣?jì)時(shí)器用于 MQTT CONNECT 消息的可變頭部中。只提供密碼而不提供用戶名是不合法的。 如果將用戶名標(biāo)志置位,則必須在有效載荷里填寫用戶名字段,否則用戶名字段將被忽略。 連接標(biāo)志中的第 0 位在目前協(xié)議版本中沒有使用到,保留為將來使用。 如果 Will 標(biāo)志被置位,則 Will Retain 標(biāo)志必須填寫,否則其將被忽略。 連接標(biāo)志中的第 0 位在目前協(xié)議版本中沒有使用到,保留為將來使用。 如果 Will 標(biāo)志被置位,則 Will QoS 字段必須填寫,否則該字段的值將被忽略。 Will QoS 位置 : bit 43 Will QoS標(biāo)志用來設(shè)置當(dāng)客戶端異常離線時(shí),服務(wù)器發(fā)送的 Will 消息的交付質(zhì)量級(jí)別。 Will 標(biāo)志的格式如下表所示。當(dāng)客戶端通過發(fā)送 DISCONNECT 消息正常斷開時(shí), Will 消息不會(huì)發(fā)送。 連接標(biāo)志中的第 0 位在目前協(xié)議版本中沒有使用到,保留為將來使用。因?yàn)檫@個(gè)標(biāo)志其實(shí)是作用于整個(gè)會(huì)話期間的,而不只是在連接的開始階段,為了明確這個(gè)事實(shí), 所以將它重命名為 “Clean session”。 QoS 0 級(jí)別的消息由于只是盡可能的交付,所以它永遠(yuǎn)不會(huì)被存儲(chǔ)保持。一個(gè) Clean session 客戶端將不會(huì)收到過時(shí)的信息,且它每次重連時(shí)都需要重新訂閱主題。 通常情況下,客戶端會(huì)一直在其中一種模式下操作,不會(huì)進(jìn)行切換。 如果被置位(即值為 1),則服務(wù)器必須丟棄任何之前保持的該客戶端的信息,將該連接視為 “不存在( Clean) ”。 Clean session 標(biāo)志 位置 : bit 1(在連接標(biāo)志字節(jié)中,下同) 如果沒有被置位(即值為 0),則當(dāng)客戶端斷線時(shí),服務(wù)器必須保存該客戶端的訂閱信息,包括斷線期間發(fā)布的該客戶端訂閱的主題中交付質(zhì)量級(jí)別為 QoS 1 和 QoS2 的消息,這樣當(dāng)客戶端重連時(shí),這部分消息能確保被送達(dá)到客戶端。當(dāng)前版本協(xié)議中該字段的值為 3( 0x03),如下表所示。 協(xié)議版本( Protocol version) 協(xié)議版本字段只用于 MQTT CONNECT 消息的可變頭部中。 協(xié)議名稱( Protocol name) 協(xié)議名稱字段只用于 MQTT CONNECT 消息的可變頭部中。更多細(xì)節(jié)可可見 固定頭部 。剩余長(zhǎng)度字段的值不包括該字段本身的長(zhǎng)度。 可變頭部( Variable header) 某些類型的 MQTT 命令消息還包含了一個(gè)可變頭部,它位于固定頭部和有效載荷之間。這部分 “增加的長(zhǎng)度 ”( 13 字節(jié))是固定頭部的一部分,而不屬于可變頭部。 值得注意的是,剩余長(zhǎng)度編碼不是可變頭部的一部分。)。next digit from stream39。 digit while ( X 0 ) 其中, MOD是模運(yùn)算符(在 C語言中相當(dāng)于 %), DIV表示整數(shù)除法(在 C語言中相當(dāng)于/), OR 是位或運(yùn)算符(在 C 語言中相當(dāng)于 |)。 do digit = X MOD 128 X = X DIV 128 // if there are more digits to encode, set the top bit of this digit if ( X 0 ) digit = digit OR 0x80 endif 39。 下表給出了增加該字段的字節(jié)數(shù)時(shí)相應(yīng)可表示的剩余長(zhǎng)度值。 十進(jìn)制數(shù)字 321( =65 + 2x128)則需要用 2 個(gè)字節(jié)來編碼,其中第 1 個(gè)字節(jié)為 1100 0001,該字節(jié)的低 7 位表示 65,第 8位表示后面還有字節(jié);第 2 個(gè)字節(jié)為 0000 00
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1