开发者社区> 问答> 正文

使用不同的客户端连接阿里云,出现掉线的现象,一直没搞懂这种现象产生的原因。

首先使用Mqtt连接阿里云。然后订阅其中的一个主题。 这样是可以的。 1651149835(1).png 图中显示,已经连接成功,且订阅的相关的主题。

然后使用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#写的客户端是分别在两个电脑上运行的。

展开
收起
游客jgonwzfdxyuxa 2022-04-28 20:57:20 1424 0
1 条回答
写回答
取消 提交回答
  • 2

    2022-04-29 08:46:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
微信客户端怎样应对弱网络 立即下载
探索连接的最后十秒”落时”的网关 立即下载
改善弱网络-探索移动互联网下弱网络处理方式 立即下载