Delphi 服务器的MQTT服务器故障周期';s客户端(在同一应用程序上)

Delphi 服务器的MQTT服务器故障周期';s客户端(在同一应用程序上),delphi,wireshark,mqtt,Delphi,Wireshark,Mqtt,我正在使用Pascal和Delphy XE2开发一个MQTT服务器应用程序,用于连接其他应用程序,其中包含MQTT客户端和一个Android应用程序,该应用程序可以接收信息并发送recept Ack。对于一个良好的使用,我需要一个良好的保留 在服务器应用程序上,我制作了一个MQTT客户端,用于跟踪系统的活动并检查消息的良好传输 这个应用程序很好,没有内存泄漏(用FastMM验证),所有功能都正常(我已经检查了一切…)。但我不明白,在几天内,所有的工作都很好,过了一会儿,我的服务器就停下来听客户机

我正在使用Pascal和Delphy XE2开发一个MQTT服务器应用程序,用于连接其他应用程序,其中包含MQTT客户端和一个Android应用程序,该应用程序可以接收信息并发送recept Ack。对于一个良好的使用,我需要一个良好的保留

在服务器应用程序上,我制作了一个MQTT客户端,用于跟踪系统的活动并检查消息的良好传输

这个应用程序很好,没有内存泄漏(用FastMM验证),所有功能都正常(我已经检查了一切…)。但我不明白,在几天内,所有的工作都很好,过了一会儿,我的服务器就停下来听客户机的声音

我可以销毁客户端和服务器的对象,重新创建和重新连接,没有任何东西可以修复应用程序,我必须关闭并打开服务器的新进程

在网上搜索之后,我没有发现任何关于这种失败循环的信息

确切地说,以下行为总是一样的:

  • 一切都好

  • 我的客户端尝试发送消息,但失败。它尝试了8次(MaxRetry)

  • 在那之后,它一直都在重新连接,因为他在同一台计算机上,但他无法启动所有消息

  • 因为它是传输的主要支柱,所以它会导致其他客户端的断开,从而重复和完成断开-重新连接。 //回归常态

  • 配置客户端:

    TTClientComp.AutoSubscribe := false;
    TTClientComp.Broker := false;
    TTClientComp.Clean := TRUE;
    TTClientComp.Host := 'localhost';
    TTClientComp.KeepAlive := 10;
    TTClientComp.LocalBounce := false;
    TTClientComp.MaxRetries := 8;
    TTClientComp.Port := 1883;
    TTClientComp.RetryTime := 60;
    TTClientComp.Tag := 0;
    TTClientComp.ClientID:='ClServ';
    
    配置服务器

    TTServeurComp.Port := 1883;
    TTServeurComp.RetryTime := 60;
    TTServeurComp.MaxRetries := 4;
    TTServeurComp.Tag := 0;
    TTServeurComp.LocalBounce := false;
    
    如果有人能帮我,不客气

    对不起,我的英语不好,我正在训练我,让我变得更好;)

    谢谢你的阅读和时间

    /////////////////////////

    编辑com:: (见WireShark)(37.124、139.1、37.248为客户端,175为服务器)

    此消息的后续内容周期性地出现3分钟7秒,并且与我的错误发生在同一时刻。我通常不会用那个逻辑,如果有人能快速地解释我,他会很酷,因为我不知道什么是,例如,“tapeware”(挂件)

    讨论正常//

    37.175>37.248 Ack ibm mqisdp>57080

    139.1>37.175 Psh,Ack 50562>ibm mqisdp

    37.175>139.1 Psh,确认ibm mqisdp>50562

    137.1>37.175 Ack 50562>ibm mqisdp

    37.124>37.175 Psh,Ack tapeware>ibm mqisdp

    37.175>37.124 Ack ibm mqisdp>tapeware

    臭虫//

    37.248>37.175 Fin,Ack57080>ibm mqisdp

    37.175>37.248 Ack ibm mqisdp>57080

    37.175>37.248 Fin,确认ibm mqisdp>57080

    37.248>37.175 Ack 57080>ibm mqisdp

    37.248>37.175 Syn59022>ibm mqisdp

    37.175>37.248 Rst,确认ibm mqisdp>59022

    /!\第一个客户端现在被服务器应用程序断开了连接(它是安卓手机或平板电脑)

    37.175>37.124 Fin,Ack ibm mqisdp>tapeware

    37.124>37.175 Ack tapeware>ibm mqisdp

    37.124>37.175 Fin,Ack tapeware>ibm mqisdp

    37.175>37.124 Ack ibm mqisdp>tapeware

    37.175>37.124 Fin,确认ibm mqisdp>crinis hb

    37.124>37.175 Ack crinis hb>ibm mqisdp

    37.124>37.175 Fin,Ack crinis hb>ibm mqisdp

    37.175>37.124 Ack ibm mqisdp>crinis hb

    37.175>37.124 Fin,确认ibm mqisdp>epl slp

    37.124>37.175 Ack epl slp>ibm mqisdp

    37.124>37.175 Fin,确认epl slp>ibm mqisdp

    37.175>37.124 Ack ibm mqisdp>epl slp

    37.124>37.175同步rnm>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>rnm

    /!\在这里,我认为其他客户端开始断开连接,但我有一点清理,因为只有一个客户端

    37.124>37.175同步rnm>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>rnm

    37.124>37.175同步rnm>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>rnm

    37.124>37.175 Synv-one-spp>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>v-one-spp

    37.124>37.175 Syn v-one-spp>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>v-one-spp

    37.124>37.175 Syn一个pcp>ibm mqisdp

    37.175>37.124 Rst,Ack ibm mqisdp>一个pcp

    37.124>37.175 Synv-one-spp>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>v-one-spp

    37.124>37.175 Syn一个pcp>ibm mqisdp

    37.175>37.124 Rst,Ack ibm mqisdp>一个pcp

    37.124>37.175同步pcp>ibm mqisdp

    37.175>37.124 Rst,Ack ibm mqisdp>一个pcp

    37.124>37.175 Syn项目>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>项目

    37.124>37.175同步项>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>项目

    37.124>37.175同步项>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>项目

    37.124>37.175同步

    37.175>37.124 Rst,确认ibm mqisdp>spw_dnspreload

    37.124>37.175同步spw_dnspreload>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>spw_dnspreload

    37.124>37.175 Synqtms引导程序>ibm mqisdp

    37.175>37.124 Rst,确认ibm mqisdp>qtms引导

    37.124>37.175 Syn