xe2心跳设置相关资料
来源:互联网 发布:windows 8.1 update 1 编辑:程序博客网 时间:2024/05/22 03:10
delphi盒子sdhzth(通慧):
delphi xe2下的datasnap心跳包设置
1、在servercontainer文件中,先增加一个private变量,
FConnections:TDictionary<TIdTCPConnection,TDSTCPChannel>;
2、在servercontainer1.datamoduleCreate(Sender:Tobject)中添加:
FConnections:=TDictionary<TIdTCPConnection,TDSTCPChannel>.Create;
3、在servercontainer1.DSTCPServerTransport1Connect中添加:
FConnections.Add(TIdTCPConnection(Event.Connection), Event.Channel);
Event.Channel.EnableKeepAlive(10000);//心跳包设置为10秒
4、在servercontainer1.DSTCPServerTransport1Disconnect中添加
FConnections.Remove(TIdTCPConnection(Event.Connection));
大家可以测试一下。
fiscan6430 (fiscan6430):将Transport的KeepAliveEnablement设置成kaEnabled,然后设置KeepAliveTime和KeepAliveInterval两个参数,如果意外断线的话,能够在Transport的Disconnect事件中获得。
http://bbs.2ccc.com/topic.asp?topicid=396438
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SUNSTONE的Delphi笔记
http://blog.csdn.net/sunstone/article/details/5016363
Delphi2010中DataSnap,如果客户端异常掉线或拔掉网线,那么在服务端会留下一个TCP连接,这个连接会变成死连接(经过测试,如果windows的TCP保持连接禁用的话,三个小时该死连接还不消失)。如果大量客户端并发,出现的死TCP连接过多,服务器内存和端口将会增加,直到占满服务器的端口和耗尽内存为止。如果这样的话,服务器无法健壮稳定的运行。
大家可以另开线程来监控客户端连接,但是今天要给大家讲解的不是这个方法,而是使用TCP协议自带的心跳包功能解决这个问题。
大家先了解一下TCP keep-alive原理
一个TCP keep-alive 包是一个简单的ACK,该ACK包内容为一个比当前连接sequence number 小于一的包。主机接受到这些ACKs会返
回一个包含当前sequence number 的ACK包。
Keep-alives一般被用来验证远端连接是否有效。如果该连接上没有其他数据被传输,或者更高level 的 keep-alives被传送,keep-alives 在每个KeepAliveTime被发送。(默认是 7,200,000 milliseconds ,也就是2个小时)。
如果没有收到 keep-alive 应答,keep-alive 将在每 KeepAliveInterval 秒重发一次。KeepAliveInterval 默认为1秒。如 Microsoft 网络功能中很多部分中采用的 NETBT 连接,更常见的是发送 NETBios keep-alives,所以,在 NetBios 连接中通常不发送TCP keep-alives。
TCP保持连接默认被禁用,但是微软Sockets应用程序可以使用SetSockOpt函数去启用他们。
请看下面的类
type
TCP_KeepAlive = record
OnOff: Cardinal;
KeepAliveTime: Cardinal; // 多长时间(ms)没有数据就开始send心跳包
KeepAliveInterval: Cardinal // 每隔多长时间(ms)send一个心跳包,发5次(系统值)
end;
KeepAliveTime: TCP连接多长时间(毫秒)没有数据就开始发送心跳包,有数据传递的时候不发送心跳包
KeepAliveInterval: 每隔多长时间(毫秒)发送一个心跳包,发5次(系统默认值)
如果客户端网络中断,服务器系统发送心跳包后,服务器会自动解除TCP连接。这一点,大家可以使用 netstat -p -tcp 命令查看
接下来我们将结合Delphi2010 DataSnap技术使用心跳包功能!敬请关注
- xe2心跳设置相关资料
- delphi xe2下的datasnap心跳包设置
- Delphi XE2 - 点点滴滴设置
- 记录 "心跳机制" 相关问题
- mysql心跳相关的参数
- 相关资料
- 相关资料
- 相关资料
- 相关资料
- 相关资料:
- 相关资料
- 相关资料
- C++ Project->settings设置相关(很全面的资料)
- Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
- 心跳
- 心跳
- 心跳
- 心跳
- 九度oj 第6题 变态跳台阶 何海涛:《剑指Offer:名企面试官精讲典型编程题》
- 悟透JavaScript-很有深度的文章
- 就一个技术错误向《程序员》杂志读者和编辑道歉[更新]
- Android为拨号盘dialer定制声音DTMF Tones
- HDOJ 1245 Saving James Bond
- xe2心跳设置相关资料
- GDB中应该知道的几个调试方法
- 设计模式:策略模式(Python)
- Android资源文件
- 2011湖南省ACM大赛K题
- C语言中两个反正切函数atan与atan2的区别
- ExtJs4.1布局详解
- vs打包程序
- Android UI:shape和selector