网络协议之-MQTT协议

如果想好什么方向,一点都不能改变的话,那么这个方向就会成为你的禁锢,遇到更好的选择更好的,你的路才能走得更加 顺利。 --随笔

实际之前也没有了解过这个这个网络协议,只要涉及到网络学习想到的就是HTTP|OkHTTP,这样的想法反而更多的时候会束缚到我,直到在一次做项目的时候被要求了用到这个协议,于是就简单的记了以下内容:

MQTT概述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是轻量级基于代理的发布/订阅的消息传输协议,但是不会保证消息的顺序,属于应用层协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境,例如:

  1. 网络代价昂贵,带宽低、不可靠。
  2. 在嵌入设备中运行,处理器和内存资源有限。

该协议的特点有:

1.使用发布/订阅(Pub/Sub)消息模式,提供一对多的消息发布,解除应用程序耦合。
2.对负载内容屏蔽的消息传输。
3.使用 TCP/IP 提供网络连接。
4.有三种消息发布服务质量:
①"至多一次",消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
②"至少一次",确保消息到达,但消息重复可能会发生。
③"只有一次",确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5.小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

6.使用 Last Will (临终遗嘱功能)和 Testament(遗嘱) 特性通知有关各方客户端异常中断的机制。

MQTT之Android实现

配置Android端的MQTT需要的参数
Topic: 订阅的事件,也是主题
URL: MQTT服务器的地址
username&password: 账户与密码
ClientId: 客户端的ID,可以自定义,必须保证唯一性,否则连接服务器的时候会导致服务器断开。和服务器里的”客户机标识“不能一致

    private String host = "tcp://49.235.228.156:1883";
    private String userName = "thoughtCoding";
    private String passWord = "tc123123";
    private String clientId = "landlord's cat";
	//订阅模块
	public void subscribe(String topic,int qos){
        if(client != null){
            int[] Qos = {qos};
           String []topic1 = {topic};//订阅的主题
            try {
                client.subscribe(topic1, Qos);//订阅信息
                Log.d(TAG,"订阅topic (sub): "+topic);
            } catch (MqttException e) {
                e.printStackTrace();
            }
        }
    }

步骤:
1、添加依赖
2、声明权限
3、开启服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值