MQTT通讯之连接MQTT服务器

根据 添加链接描述
添加链接描述

我的APP已经成功连接上MQTT服务器,至于怎么发布和接收,正在研究,研究好了,发上来。
作者写的代码是Java的,但现在都推荐Kotlin

我就把转好的Kotlin代码发出来

package com.example.mqtt_kotlin

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle
import android.widget.Toast
import com.example.mqtt_kotlin.R

import org.eclipse.paho.android.service.MqttAndroidClient
import org.eclipse.paho.client.mqttv3.IMqttActionListener
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken
import org.eclipse.paho.client.mqttv3.IMqttToken
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended
import org.eclipse.paho.client.mqttv3.MqttConnectOptions
import org.eclipse.paho.client.mqttv3.MqttMessage

class MainActivity : AppCompatActivity() {
    private val serverUri = "tcp://mqtt.hui-ke.com:1883"
    private val userName = "admin"
    private val passWord = "admin"
    private val clientId = "mqtt_kotlin手机客户端"
    private val mqtt_sub_topic = "Android_Get"          //需要订阅的主题
    private val mqtt_pub_topic = "Android_Set"          //需要发布的主题

    private var mqtt_client: MqttAndroidClient? = null                   //创建一个mqtt_client对象


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mqtt_init_Connect()
    }

    fun mqtt_init_Connect() {
        try {
            //实例化mqtt_client,第一个参数是app的上下文,直接填入就行,然后填入我们定义的serverUri和clientId
            mqtt_client = MqttAndroidClient(applicationContext, serverUri, clientId)
            //创建并实例化一个MQTT的连接参数对象
            val options = MqttConnectOptions()
            //然后设置对应的参数
            options.userName = userName                  //设置连接的用户名
            options.password = passWord.toCharArray()    //设置连接的密码
            options.connectionTimeout = 30               // 设置超时时间,单位为秒
            options.keepAliveInterval = 60               //设置心跳,30s
            options.isAutomaticReconnect = true            //是否重连
            //设置是否清空session,设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
            options.isCleanSession = true

            //设置回调
            mqtt_client!!.setCallback(object : MqttCallbackExtended {
                override fun connectComplete(reconnect: Boolean, serverURI: String) {
                    //连接成功
                    makeToast("连接成功")
                }

                override fun connectionLost(cause: Throwable) {
                    //连接丢失后,一般在这里面进行重连
                    makeToast("连接中断")
                }

                override fun deliveryComplete(token: IMqttDeliveryToken) {
                    //publish后会执行到这里
                }

                @Throws(Exception::class)
                override fun messageArrived(topicName: String, message: MqttMessage) {
                    //subscribe后得到的消息会执行到这里面
                }
            })

            mqtt_client!!.connect(options)

        } catch (e: Exception) {
            e.printStackTrace()
        }

    }

    private fun makeToast(toast_str: String) {
        Toast.makeText(this@MainActivity, toast_str, Toast.LENGTH_LONG).show()
    }

}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32是一种微控制器,可以用来控制各种电子设备。使用AT指令可以连接MQTT服务器MQTT是一种在物联网应用中非常流行的消息协议。MQTT服务器允许设备通过云端连接、通信和控制。 使用AT指令连接MQTT服务器需要一些步骤。首先需要确定所使用的设备是否支持AT指令,然后需要配置网络连接参数,并且为设备提供连接服务器的认证信息。 连接MQTT服务器需要使用TCP/IP协议。要连接MQTT服务器,需要使用服务器的IP地址和端口号。在发送MQTT消息之前,需要先进行身份验证。这可以通过使用用户名和密码来实现。 一旦设备成功连接MQTT服务器,就可以使用MQTT协议发送和接收消息。这样就可以建立一个功能强大的物联网系统,通过这个系统,可以控制各种设备,同时监测设备的状态和数据。 总之,STM32使用AT指令连接MQTT服务器需要一些技术,需要一定的经验和知识。但是,如果你能掌握这些技能,就可以在物联网应用的开发和部署中发挥重要的作用。 ### 回答2: STM32是一款功能强大的微控制器,在当前互联网大数据的时代,其可用于连接MQTT服务器MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅(pub/sub)模式的通信协议,被广泛应用于物联网领域。 在使用STM32连接MQTT服务器前,需要先学习AT指令并了解其使用方法。AT指令(AT Commands)是用来控制和配置通信模块的一种指令格式,若能正确使用AT指令,STM32与MQTT服务器连接就不在话下。 以下为连接MQTT服务器的步骤: 1. 进行网络连接,如Wi-Fi或以太网,确保STM32与网络相连。 2. 在STM32中使用AT指令建立与MQTT服务器连接,包括连接服务器、建立通信频道、登录服务器等操作。 3. 使用AT指令订阅MQTT主题,接收或发布消息。如此一来STM32就可以与MQTT服务器直接通讯。 注意: 1. 必须确保网络连接正常,否则MQTT服务器无法连接。 2. 可以通过在程序结构中添加异常处理来诊断连接问题。在连接的过程中,如果程序出现问题,可以在程序编写过程中添加日志记录来快速解决问题。 总而言之,STM32使用AT指令连接MQTT服务器需要提前学习AT指令,并能够正确使用。在连接MQTT服务器的过程中,要确保网络连接、日志记录以及异常处理的准确性,以确保稳定的通信。 ### 回答3: STM32是一种嵌入式系统芯片,通过使用AT指令可以连接MQTT服务器MQTT是一种轻量级的消息传输协议,可以在低带宽和低计算能力环境下使用。 要使用STM32连接MQTT服务器,需要对设备进行初始化和配置,比如设置网络类型、配置IP地址和端口号、设置用户名和密码等,然后使用AT指令进行连接和通信。下面是一些常用的AT指令: 1. AT+CIPSTART:建立连接,并指定协议类型、服务器IP和端口号。 2. AT+CIPSEND:发送消息,指定消息长度和内容。 3. AT+CIPCLOSE:关闭连接。 4. AT+MQTTUSERDATA:设置用户名和密码。 5. AT+MQTTKEEPALIVE:设置保持连接时间。 使用这些AT指令,我们可以在STM32上实现连接MQTT服务器,并实现双向数据传输。同时,需要注意的是,使用AT指令连接MQTT服务器时,需要考虑网络稳定性和连接安全性,确保数据的准确性和隐私安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤脚_码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值