首先使用Mqtt连接阿里云。然后订阅其中的一个主题。 这样是可以的。 图中显示,已经连接成功,且订阅的相关的主题。
然后使用C#编写的客户端,主要代码如下。 点击按钮后,生成相应的信息,然后连接阿里云。 private void ConnectMqtt(string targetServer, string mqttClientId, string mqttUserName, string mqttPassword) { client = new MqttClient(targetServer); client.ProtocolVersion = MqttProtocolVersion.Version_3_1_1;
client.Connect(mqttClientId, mqttUserName, mqttPassword, false, 60);
client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
}
private void BtnMqttConnect_Click(object sender, EventArgs e)
{
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
string clientId = host.AddressList.FirstOrDefault(
ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();
string t = Convert.ToString(DateTimeOffset.Now.ToUnixTimeMilliseconds());
string signmethod = "hmacmd5";
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("productKey", ProductKey);
dict.Add("deviceName", DeviceName);
dict.Add("clientId", clientId);
dict.Add("timestamp", t);
string mqttUserName = DeviceName + "&" + ProductKey;
string mqttPassword = IotSignUtils.sign(dict, DeviceSecret, signmethod);
string mqttClientId = clientId + "|securemode=3,signmethod=" + signmethod + ",timestamp=" + t + "|";
string targetServer = ProductKey + ".iot-as-mqtt." + RegionId + ".aliyuncs.com";
ConnectMqtt(targetServer, mqttClientId, mqttUserName, mqttPassword);
}
![1651150344(1).png](https://ucc.alicdn.com/pic/developer-ecology/c10dcc8782ed44718f57aeaf8e443f36.png)
之前也试过用python的客户端进行连接。也是会出现后发起连接的客户端将先发起连接的客户端踢掉线的情形。
为了避免同一台电脑导致的IP一致的倾向,MQTT客户端和C#写的客户端是分别在两个电脑上运行的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。