例程为匿名登录的报文,只向服务器发送客户端ID,不发送username和password
第1位固定报头 10
第2-5位 剩余字节长度 ??
(剩余字节长度=可变报头+负载)最多4字节,每个字节最高位为标志位。
例如:剩余字节长度为1000
1000/128=7余104;
104的二进制为0110 1000
第一位置1为1110 1000变为16进制为E8
所以报文为E8 07
例如:剩余字节长度为20000
20000/128=156余32;
32的二进制为0010 0000
第一位,置1为1010 0000变为16进制为A0
156/128=1余28;
28的二进制为0001 1100
第二位,置1为1001 1100变为16进制为9C
第三位为1变为16进制为01
所以报文为A0 9C 01
第6-12位可变报头
00 04 4D 51 54 54 04(默认即可)
第13位连接标志
0000 0010变为16进制为02
因为是匿名登录所以前两位为0
第14-15位保活时间
按30s设置为:00 1E
第16-N位客户端ID
设客户端ID: ed1c1a90afb744f18a4f711825a9061e
共33位准换为两位16进制数为00 21
客户端ID转换为16进制为20 65 64 31 63 31 61 39 30 61 66 62 37 34 34 66 31 38 61 34 66 37 31 31 38 32 35 61 39 30 36 31 65
CONNECT报文为:
10 ?? 00 04 4D 51 54 54 04 02 00 1E 00 21 20 65 64 31 63 31 61 39 30 61 66 62 37 34 34 66 31 38 61 34 66 37 31 31 38 32 35 61 39 30 36 31 65
??之后共有45位,计算后为2D
CONNECT报文终版
10 2D 00 04 4D 51 54 54 04 02 00 1E 00 21 20 65 64 31 63 31 61 39 30 61 66 62 37 34 34 66 31 38 61 34 66 37 31 31 38 32 35 61 39 30 36 31 65