MQTT简介(http://mqtt.org/)
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
MQTT协议中文文档(https://mcxiaoke.gitbooks.io/mqtt-cn/content/)
MQTT是基于二进制消息的发布/订阅编程模式的消息协议(MQTT 协议是建立在 TCP 协议之上的),最早由IBM提出的,如今已经成为OASIS规范。由于规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景,比如:
- 遥感数据
- 汽车
- 智能家居
- 智慧城市
- 医疗医护
详细介绍请移步至:http://dataguild.org/?p=6817
mqtt 能做什么?(物联网、即时通讯还可以用到其他适应的场景)
mqtt 简单来讲就是一个协议 是基于tcp之上的协议, 现在好多消息中间件都支持 mqtt协议 (mosquitto、activemq.....等)
那么问题来了,为什么要在 TCP 协议之上再封装一层 MQTT 协议呢?
就好比汽车地盘上有四个轮胎就能跑了,但是想要大家开车更舒服,我们还是得给底盘加个壳。
举个例子,如果你要用 TCP 协议做一个即时聊天室,那么你:
1. 首先写一个服务器程序,监听某个端口,这样客户端就能连接上来了。然后大家就能向你的服务器发送数据了。
2. 但是你不希望随便谁都能连接你的服务器并且往你的服务器里发东西,于是你写了一个注册页面,让别人先去注册账号,然后他们在客户端创建连接时发送的第一个TCP报文必须包含了账号密码。这样当你收到第一个报文之后,你就能判断这个连接是否合法了。
3. 但是发过来的账号密码,具体摆在报文什么位置,也得事先约定好吧,不然怎么知道哪几位是账号哪几位是密码,于是你要求:第一个字节为1,