首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MQTT/TCP超时

MQTT/TCP超时
EN

Stack Overflow用户
提问于 2020-08-01 15:50:01
回答 1查看 1.4K关注 0票数 2

我编写了一个简单的程序来观察MQTT连接状态。

MQTT库选择

只执行、连接,而不执行其他操作,如client.loop(保持连接) MQTT断开连接。

连接成功并等待约22秒后,TCP发送FIN、ACK和RST、ACK。

TCP是否超时?以及如何从Wireshark了解TCP超时值和查看会话。

客户端: ESP8266 <-> MQTT代理: Windows

代码:

代码语言:javascript
复制
    void MQTT_Setup(){
      client.setServer(MQTT_SERVER, MQTT_PORT);
      //client.setCallback(callback);
      MQTT_Connect();
    }
    
    void MQTT_Connect(){
      bool bMQTT;
      bMQTT = client.connect("ESP");
      Serial.println("MQTT Connected");
      if(bMQTT)MQTT_Disconnect();
      //MQTT_Publish();
    }
    void setup() {
    Serial.begin(BAUDRATE);
    delay(3000);
    WIFI_Setup();
    MQTT_Setup();
    }

    void loop() {
      //client.loop();
    }

Wireshark:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 17:02:59

可以在PubSubClient.h的第36行找到PubSubClient的默认MQTT Keep alive值

缺省值为15秒,代理将等待1.5秒保持活动状态,如果没有收到来自客户端的数据包,则丢弃连接。

代码语言:javascript
复制
15 * 1.5 ~= 22 seconds

这就是连接被关闭的原因。如果需要,client.loop()函数将发送所需的ping数据包以保持连接处于活动状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63202988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档