(原)Lazarus下WinCE终端、服务器心跳监控(Ping)源码
背景:1、使用lnet做了WinCE的客户端以及Win32的服务器端,WinCE在休眠之后会因为lnet的通讯异常导致程序崩溃而退出,并且这种异常无法捕捉、处理。
解决办法:1、如果不保持lnet的联机状态,的确系统不会异常、退出,但每次都需要连接(需有有延时之后才能发消息),效率很低。
2、有必要做一个‘心跳’监控,在使用lnet通讯之前确定客户端是否已与服务器断开,如断开则提示重新连接lnet
3、Indy等包含icmp组件支持ping功能,但实践证明indy不支持WinCE。
4、此后分别查到icmp.dll 、iphlpapi.dll等组件可以实现ping的功能,经实践icmp、iphlpapi在Win32下很好用,但WinCE下icmp无法使用,iphlpapi反馈结果不正确(应该是本人二次封装导致的,原因未明)。
5、再后来群中有位朋友介绍了synapse v39(一个类indy的组件包),查了一下帮助写了一个Ping的小程序,在Win32、WinCE下通过(liunx等操作系统肯定不好用,因为这个组件包的ping也是基于iphlpapi.dll的)。