C# Mqtt客户端

#记录与学习

1.NUGET-->mqttnet-->版本2.8

private IMqttClient mqttClient;

private void btn_Connect_Click(object sender, EventArgs e)

{

mqttClient = new MqttFactory().CreateMqttClient();

var option = new MqttClientOptions() { ClientId = Guid.NewGuid().ToString("D") };//ID

option.ChannelOptions = new MqttClientTcpOptions()

{

Server = this.txt_client_address.Text,

Port = Convert.ToInt32(this.txt_client_port.Text)

};

//验证

option.Credentials = new MqttClientCredentials()

{

Username = this.txt_cenlit_UserName.Text,

Password = this.txt_client_UserPwd.Text

};

option.CleanSession = true;

option.KeepAlivePeriod = TimeSpan.FromSeconds(100);

option.KeepAliveSendInterval = TimeSpan.FromSeconds(2000);

//事件

mqttClient.Connected += MqttClient_Connected;//链接事件

mqttClient.Disconnected += MqttClient_Disconnected;//断开事件

mqttClient.ApplicationMessageReceived += MqttClient_ApplicationMessageReceived;//消息事件

}

//断开

private void btn_DisConn_Click(object sender, EventArgs e)

{

if (mqttClient == null) return;

mqttClient.DisconnectAsync();

}

//消息事件

private void MqttClient_ApplicationMessageReceived(object sender, MqttApplicationMessageReceivedEventArgs e)

{

inLog1.AddLog(1, "接收服务器数据 ClientId:"+e.ClientId);

}

private void MqttClient_Disconnected(object sender,MQTTnet.Client.MqttClientDisconnectedEventArgs e)

{

clientTimer.Stop();

//bool stat = e.ClientWasConnected;//

try

{

if (e.ClientWasConnected)

{

inLog1.AddLog(1, "服务器或客户端下线 ClientWasConnected:" + e.ClientWasConnected);

}

else

{

inLog1.AddLog(1, "链接服务器失败 ClientWasConnected:" + e.ClientWasConnected);

}

}

catch (Exception ex)

{

inLog1.AddLog(2,ex.Message);

}

//链接失败||链接超时||服务端异常下线都会触发

//inLog1.AddLog(1, "链接失败||链接超时||服务端异常 ClientWasConnected:"+e.ClientWasConnected.ToString());

// inLog1.AddLog(1, "服务器链接失败 ClientWasConnected:"+e.ClientWasConnected+" Exception:" +e.Exception.Message);

}

private void MqttClient_Connected(object sender,MQTTnet.Client.MqttClientConnectedEventArgs e)

{

inLog1.AddLog(0,"服务器链接成功");

clientTimer.Start();

}

//订阅事件

private void ClientSend(string str)

{

try

{

inLog1.AddLog(0,"开始订阅");

var msg = new MqttApplicationMessage()

{

Topic = "测试",//主题

Payload = Encoding.Default.GetBytes(str),

QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce,//次数

Retain = false

};

mqttClient.PublishAsync(msg);

}

catch (Exception ex)

{

inLog1.AddLog(2,"订阅失败 原因:"+ex.Message);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值