網(wǎng)站建設(shè)在作用是什么青島網(wǎng)站建設(shè)
使用網(wǎng)絡(luò)調(diào)試助手發(fā)送CONNECT報(bào)文連接阿里云
參考:https://blog.csdn.net/daniaoxp/article/details/103039296
在前面文章介紹了如何組裝CONNECT報(bào)文,以及如何計(jì)算剩余長度
CONNECT報(bào)文:https://blog.csdn.net/weixin_46251230/article/details/129392102
計(jì)算剩余長度:https://blog.csdn.net/weixin_46251230/article/details/129394172
本次實(shí)驗(yàn)通過網(wǎng)絡(luò)調(diào)試助手發(fā)送CONNECT報(bào)文連接阿里云平臺(tái)
1、創(chuàng)建阿里云設(shè)備,獲取MQTT連接參數(shù)
創(chuàng)建阿里云設(shè)備:https://blog.csdn.net/weixin_46251230/article/details/128993864
2、轉(zhuǎn)換MQTT連接參數(shù)
將clientId、username、passwd都轉(zhuǎn)為十六進(jìn)制,可以借助網(wǎng)絡(luò)調(diào)試助手進(jìn)行轉(zhuǎn)換
協(xié)議選擇UDP,選擇自己主機(jī)的地址,端口8888,在遠(yuǎn)程主機(jī)那里也選擇自己的主機(jī)地址,選擇ASCII模式,在該模式下粘貼參數(shù),首先粘貼clientId,多余的空格要去掉
然后點(diǎn)擊HEX,則輸入框內(nèi)的ASCII碼會(huì)自動(dòng)轉(zhuǎn)為十六進(jìn)制,將這些十六進(jìn)制復(fù)制到文本文檔
點(diǎn)擊右下角的復(fù)位計(jì)數(shù),然后點(diǎn)擊發(fā)送,可以看到發(fā)送了80個(gè)字符
將80轉(zhuǎn)為十六進(jìn)制0x50,放到文本文檔的十六進(jìn)制數(shù)據(jù)前面,要符合UTF-8編碼,所以還要在前面加上00
同理,將username和passwd都轉(zhuǎn)為十六進(jìn)制格式
3、組裝CONNETC報(bào)文
有效載荷就是將clientId、username、passwd的十六進(jìn)制數(shù)據(jù)都組合在一起
固定報(bào)頭+可變報(bào)頭,剩余長度可先用??代替,空著
按固定報(bào)頭+可變報(bào)頭+有效負(fù)載的順序組合數(shù)據(jù)
4、計(jì)算剩余長度
將??后面的字符全都復(fù)制到網(wǎng)絡(luò)調(diào)試助手里,復(fù)位計(jì)數(shù)后,點(diǎn)擊發(fā)送,可看到一共發(fā)送了180個(gè)字節(jié)
根據(jù)計(jì)算剩余長度的步驟可知,180大于128,又小于16383,所以使用兩個(gè)字節(jié)來表示
根據(jù)公式180=128*a+b,計(jì)算可得a = 1,b = 52,a在高8位,b在低8位,低位在前,高位在后,所以書寫順序是b a
b = 0011 0100 = 1011 0100 (最高位指示后面還有字節(jié)表示剩余長度,所以要主動(dòng)置為1)
b = B4
a = 0000 0001 = 01
將B4 01粘貼到組合數(shù)據(jù)中
5、連接阿里云平臺(tái)
阿里云服務(wù)器地址(華東2) : *.iot-as-mqtt.cn-shanghai.aliyuncs.com
*用自己設(shè)備的ProductKey進(jìn)行替換
如:i6deo513xT1.iot-as-mqtt.cn-shanghai.aliyuncs.com
端口號為1883
將網(wǎng)絡(luò)調(diào)試助手改為TCP Client,遠(yuǎn)程主機(jī)地址填入i6deo513xT1.iot-as-mqtt.cn-shanghai.aliyuncs.com,端口號1883,點(diǎn)擊HEX,將上面組合好的CONNECT報(bào)文復(fù)制粘貼到輸入框,點(diǎn)擊連接,再點(diǎn)擊發(fā)送
接收時(shí)記得設(shè)置為HEX接收,如果阿里云返回的信息中,最后一個(gè)字節(jié)為00,則說明連接成功,如果不是00,則連接失敗,下標(biāo)是最后一個(gè)字節(jié)的可能取值,只有0x00是表示連接已接受
此時(shí)可以看到阿里云平臺(tái)的設(shè)備已經(jīng)顯示在線