m2数据库服务器连接断开

m2数据库服务器连接断开,第1张

在使用M2Mqtt.dll这个控件时候,对于断网后,按照网上的说法,是处于broken状态而且这个状态基本是不会主动改变的,在连接后,还是不能重新收发数据,而且这个控件当中,Ping检索是使用的1分钟检索一次,再次内部处理 *** 作时,往往会超过5分钟左右,对 于现实开发的项目来说,非常不实用,方便。而且也查找了一些网上说的断网重连的方式,感觉要么是不用能,要么是缺少关键性的东西,所以,经过自己研究以后,修改了一下原代码并且加了外部处理,解决了断网重连的问题,下面分享一下,希望能够帮助到后续的使用人员。

首先,打开M2Mqtt这个项目,打开MqttClient这个类,修改KeepAliveThread()这个线程方法,将this.keepAliveEvent.WaitOne(wait)改为this.keepAliveEvent.WaitOne(1000),这是要求等待时间从原来的60000改为1000,也就是1分钟改为1秒钟。修改注释掉if (delta >= this.keepAlivePeriod)这个语句,包括块else里的内容,一起注释掉,这个方法下面,加上this.Ping()这个是保证在不能保证时间是否超时之前,强行去执行Ping校验,通过校验结果判断是否关闭Mqtt。

第二,在外部调用时,在M2Mqtt连接成功时,开启一个线程,循环监控当前连接状态,如果连接断开,重新连接,这个时候,一定要记住当前连接的Clientid、user、password、订阅主题和发布主题等信息,以免不能够及时连接后,接收后续的消息。因为在mqtt判断ping连接断开后,mqtt内部会自动断开连接,所以这个时候,我们不用手动去断开连接,但重连时,mqtt会自动搜索当前的clientid,所以这个时间有些长,而且第一次时会抛出错误,第二次连接时,才会成功,这个具体机制没有研究

DBC路径设置错误 没有设置好

打开控制面板,打开BDE Administrator‘. 点击 ‘Object‘, ‘New‘.选择STANDARD点击OK.在左面的面版你可以看到standard1,改名为HeroDB ,在右边的面版如下

Type STANDARD

DEFAULT DRIVER PARADOX

ENABLE BCD FALSE

PATH (这里没设定之前是空白的)

修改为(点右边有[...]的按键)

Type STANDARD

DEFAULT DRIVER PARADOX

ENABLE BCD FALSE

PATH D:\mirserver\mud2DB(这个是通过下拉菜单选的,不是要你自己输入进去)

在左边的面版右键点击HeroDB,然后点关闭选择‘apply‘。

数据库连接不成功的原因:

1、数据库的服务没有正常启动。

2、数据库的IP协议没有启动。

3、客户端链接服务器时电脑的防火墙没有关闭,被防火墙拦截。

解决办法:

1、检查数据库服务是否打开。打开计算机管理中的服务和应用程序。找到服务,查看状态是否启动,如果没有启动点击右键启动即可。

2、若ip协议未启动也无法正常连接,此时需要手动启动即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10023560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存