【发布时间】:2014-07-24 15:29:24
【问题描述】:
我正在使用 Delphy XE2 在 Pascal 中开发一个 MQTT 服务器应用程序,用于与包含 MQTT 客户端和一个可以接收信息并发送接收 Ack 的 Android 应用程序的其他应用程序连接。为了良好的使用,我需要良好的保留。
在服务器应用程序上,我制作了一个 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 秒,与我的错误同时出现。我通常不会使用那个 logiciel ,如果有人能快速解释我,他会很酷,因为我不知道 wath 是什么,例如,“tapeware”;)
讨论正常 //
37.175 > 37.248 确认 ibm-mqisdp > 57080
139.1 > 37.175 Psh,Ack 50562 > ibm-mqisdp
37.175 > 139.1 Psh,Ack ibm-mqisdp > 50562
137.1 > 37.175 确认 50562 > ibm-mqisdp
37.124 > 37.175 Psh,Ack 磁带软件 > ibm-mqisdp
37.175 > 37.124 确认 ibm-mqisdp > 磁带软件
错误 //
37.248 > 37.175 Fin,Ack 57080 > ibm-mqisdp
37.175 > 37.248 确认 ibm-mqisdp > 57080
37.175 > 37.248 鳍,确认 ibm-mqisdp > 57080
37.248 > 37.175 确认 57080 > ibm-mqisdp
37.248 > 37.175 Syn 59022 > ibm-mqisdp
37.175 > 37.248 Rst,Ack ibm-mqisdp > 59022
/!\ 第一个客户端现在被服务器应用程序断开连接(它是 Android 手机或平板电脑的触觉)
37.175 > 37.124 Fin,Ack ibm-mqisdp > tapeware
37.124 > 37.175 Ack 磁带软件 > ibm-mqisdp
37.124 > 37.175 Fin,Ack 磁带 > ibm-mqisdp
37.175 > 37.124 确认 ibm-mqisdp > 磁带软件
37.175 > 37.124 Fin,Ack ibm-mqisdp > crinis-hb
37.124 > 37.175 确认 crinis-hb > ibm-mqisdp
37.124 > 37.175 Fin,Ack crinis-hb > ibm-mqisdp
37.175 > 37.124 确认 ibm-mqisdp > crinis-hb
37.175 > 37.124 Fin,Ack ibm-mqisdp > epl-slp
37.124 > 37.175 确认 epl-slp > ibm-mqisdp
37.124 > 37.175 Fin,Ack epl-slp > ibm-mqisdp
37.175 > 37.124 确认 ibm-mqisdp > epl-slp
37.124 > 37.175 Syn rnm > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > rnm
/!\ 在这里,我认为其他客户端开始断开连接,但我已经清理了一点,因为只有一个客户端。
37.124 > 37.175 Syn rnm > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > rnm
37.124 > 37.175 Syn rnm > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > rnm
37.124 > 37.175 Syn v-one-spp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > v-one-spp
37.124 > 37.175 Syn v-one-spp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > v-one-spp
37.124 > 37.175 Syn an-pcp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > an-pcp
37.124 > 37.175 Syn v-one-spp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > v-one-spp
37.124 > 37.175 Syn an-pcp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > an-pcp
37.124 > 37.175 Syn an-pcp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > an-pcp
37.124 > 37.175 Syn item > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 项目
37.124 > 37.175 同义项 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 项目
37.124 > 37.175 同义项 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 项目
37.124 > 37.175 Syn spw_dnspreload > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > spw_dnspreload
37.124 > 37.175 Syn spw_dnspreload > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > spw_dnspreload
37.124 > 37.175 Syn qtms-bootstrap > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > qtms-bootstrap
37.124 > 37.175 Syn spw_dnspreload > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > spw_dnspreload
37.124 > 37.175 Syn qtms-bootstrap > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > qtms-bootstrap
37.124 > 37.175 Syn qtms-bootstrap > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > qtms-bootstrap
37.124 > 37.175 Syn spectraport > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 光谱端口
37.124 > 37.175 合成光谱端口 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 光谱端口
37.124 > 37.175 合成光谱端口 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 光谱端口
37.124 > 37.175 Syn sse-app-config> ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sse-app-config
37.124 > 37.175 Syn sse-app-config> ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sse-app-config
37.124 > 37.175 Syn sscan > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sscan
37.124 > 37.175 Syn sse-app-config> ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sse-app-config
37.124 > 37.175 Syn sscan > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sscan
37.124 > 37.175 Syn sscan > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sscan
37.124 > 37.175 Psh,Ack dvapps > ibm-mqisdp
37.175 > 37.124 Ack ibm>-mqisdp > dvapps
37.124 > 37.175 Syn opentrac > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > opentrac
37.124 > 37.175 Syn opentrac > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > opentrac
37.124 > 37.175 Syn opentrac > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > opentrac
37.124 > 37.175 Syn informer > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 告密者
37.124 > 37.175 Syn 告密者 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 告密者
37.124 > 37.175 Syn trap-port > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 陷阱端口
37.124 > 37.175 Syn informer > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 告密者
37.124 > 37.175 Syn trap-port > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 陷阱端口
37.124 > 37.175 Syn 陷阱端口 > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > 陷阱端口
37.124 > 37.175 Syn trap-port-mom > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > trap-port-mom
37.124 > 37.175 Syn trap-port-mom > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > trap-port-mom
37.124 > 37.175 Syn trap-port-mom > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > trap-port-mom
37.124 > 37.175 Syn trap-port-mom > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > trap-port-mom
37.124 > 37.175 Syn nav-port > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > nav-port
37.124 > 37.175 Syn nav-port > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > nav-port
37.124 > 37.175 Syn sasp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sasp
37.124 > 37.175 Syn nav-port > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > nav-port
37.124 > 37.175 Syn sasp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sasp
37.124 > 37.175 Syn sasp > ibm-mqisdp
37.175 > 37.124 Rst,Ack ibm-mqisdp > sasp
37.124 > 37.175 Fin, Ack ibm-mqisdp > xxnetserver
/!\ 现在,客户端开始重新连接 .但是他们不能通信,服务器只是让他们连接和减去
这不是始终相同的消息,但通常非常相似
我要去找^^
非常感谢 =)
【问题讨论】:
-
'我的客户尝试发送消息但失败' - 它究竟是如何失败的?是否有错误信息、异常?
-
没有例外。只需在 MQTT 的 TimerProc 中进行,消息重试发布但不被接收。因此客户端与服务器断开连接。但是客户端在同一个应用程序上,所以我不明白为什么连接不稳定......
-
您是否尝试分析网络流量(使用 Wireshark)?
-
up =) 抱歉,如果不删除服务器,我还没有找到解决此问题的其他方法...有人可以帮忙吗?