c# mqtt 物联网专用通信方案之MQTT服务器配置

最近由于工作比较忙,没有时间写博客,今天抽出时间来把自己部署MQTT服务器的步骤分享一下给大家,因为自己在部署的时候遇到了很多的坑,希望大家不再踩雷,我安装的是MQTT是apollo;网站很多方法感觉都没有说明白,或是有很多不完善的地方,今天我把完善的步骤写一下:

1,安装之前首先要先安装JDK因为apollo需要Java的支持,这里需要注意Java jdk的版本需要注意一不要用太高版本的,使用8.0这个我是我测试过,使用9版本的就是不行,apollo是启动不了的,现在好像官方的的版本都很高,所以小伙伴们只能自己百度下载8.0的版本了,具体JAVA怎么配置请参考这个地址

       http://www.runoob.com/java/java-environment-setup.html

当JAVA配置好后可以直接,键入命令: java -versionjavajavac 几个命令,出现以下信息,说明环境变量配置成功;

2,安装apollo,首先需要去http://activemq.apache.org/apollo/download.html 地址去下载根据自己的操作系统进行选择性下载,这里我的操作系统是Win7,所以下载第二个


3,下载完之后我们解压就可以了,在解压的同时需要注意,需要放在非中文的路径下面,否则后面会出一些想到不问题,不太好拮解决,这里我放在D盘的根目录下



4,进入bin目录下依次执行下面命令分别是

 (1)

       

(2)

     

最后执行的结果如下:

    

创建成后bin目录下就多了一个mytest1


接下来进入mytest/bin,


最后启动输入apollo-broker.cmd run启动成功如下:


接下来我们用C# 进行连接一下代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

namespace MQTTProtected
{
    public partial class Form1 : Form
    {
        MqttClient client;
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            var MQTT_BROKER_ADDRESS = "192.168.1.104";
            client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); //主机为IP时  
            //MqttClient client = new MqttClient(MQTT_BROKER_ADDRESS); //当主机地址为域名时  

            // 注册消息接收处理事件,还可以注册消息订阅成功、取消订阅成功、与服务器断开等事件处理函数  
            client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;

            //生成客户端ID并连接服务器  
            string clientId = Guid.NewGuid().ToString();   
            client.Connect(clientId, "admin", "password", false, 0x01, false, null, null, true, 60);


            // 订阅主题"/home/temperature" 消息质量为 2   
            client.Subscribe(new string[] { "/mytest/home" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });

        }
        void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            //处理接收到的消息
            string msg = System.Text.Encoding.Default.GetString(e.Message);
            this.Invoke((EventHandler)delegate { textBox1.AppendText("收到消息:" + msg + "\r\n"); });

        }
        int i = 0;
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Interval = 1;
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            client.Publish("/mytest/home", Encoding.UTF8.GetBytes(label1.Text), MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, false);

            label1.Text = (Convert.ToInt32(label1.Text.Trim()) + 1).ToString();
        }
    }
}



展开阅读全文

没有更多推荐了,返回首页