三、MQTT Windosw下的 进一步调试
一: 安装抓包工具:Wireshark, 网上大巴安装包,百度就好啦,按着顺序安装完就可以啦,软件打开界面如下:
如图,双击“”本地连接“”即可开始抓包,但是这个只能抓取网卡收发的数据;
如果想要抓取本地的TCP数据需要双击Npcap Loopback Adapter, 但是这个选项如果只安装Wireshark是没有的,还需要做下一步的操作;
二:安装Npcap,可以参考博客:wireshark如何抓取本机包,安装完成之后再打开界面就会出现上图的界面中的 所有选项
三:Wireshark的简单使用:
1. 抓包页面如下:
2. 如果不过滤数据太多了,没办法查看,所以需要设置过滤器,这里列举一些必要的设置;
1)只查看含有IP为127.0.0.1的数据:(设置完毕之后记得点击红框中的箭头来生效)
2) 只看Source 或者Destination的IP为127.0.0.1的数据
3) 只看端口为61613的数据:
4) 表达式可以用C语言中的逻辑运算符进行拼接,如:
四:相关资料:
1. MQTT协议的中文资料:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html
2. MQTT的客户端和服务器工具:
服务器: apache-apollo-1.7.1
客户端:org.eclipse.paho.ui.app-1.1.1-win32.win32.x86_64
3. 此外也可以用一下的Python Client也可以用一用:
1 #-*-coding:utf-8-*- 2 import paho.mqtt.client as mqtt 3 4 # 当连接上服务器后回调此函数 5 def on_connect(client, userdata, flags, rc): 6 print("Connected with result code "+str(rc)) 7 8 # 放在on_connect函数里意味着 9 # 重新连接时订阅主题将会被更新 10 client.subscribe("topic/sub") 11 12 # 从服务器接受到消息后回调此函数 13 def on_message(client, userdata, msg): 14 print("主题:"+msg.topic+" 消息:"+str(msg.payload)) 15 16 17 username = "admin" # MQTT服务器的登录账号 18 password = "password" # MQTT的服务器登录密码 19 myclinet_id = "IamPythonClient" # 客户端标识符 Client Identifier 20 21 #参数有 Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp") 22 client = mqtt.Client(myclinet_id ) 23 24 client.on_connect = on_connect #设置连接上服务器回调函数 25 client.on_message = on_message #设置接收到服务器消息回调函数 26 client.username_pw_set(username, password) 27 client.connect("127.0.0.1", 61613, 60) #连接服务器,端口为1883,维持心跳为60秒 28 client.loop_forever() 29