gujiwubian 发表于 2008-6-17 11:30:29

如何通过ACE检测客户端已经断线??急!!!

大家好,我是做服务器的。代码是以前的主程写的,现在他不在我们公司干了,他使用了ACEA,对于ACE,我是一点都不明白。郁闷,他说ACE会自动检测客户端是否断线了。我不知道他是怎么实现的,请问有人知道么??或者说有别的办法代替么??

winston 发表于 2008-6-17 11:58:53

通行的办法是心跳包来检测。TCP链接断开,是不会自动通知给程序的。

gujiwubian 发表于 2008-6-17 12:08:44

回复 #2 winston 的帖子

谢谢,因为我刚入行不久。不大明白您说的是什么意思。您能具体的说说看么??

gujiwubian 发表于 2008-6-17 12:14:46

用心跳包的话,会有一段时间的过程,总觉得不是很好,反应有些慢了。。。。

winston 发表于 2008-6-17 13:58:10

TCP的设计就是这样,可以参考相关的理论,因为检查断线要消耗网络资源,TCP意外断线,是不会通知你的。所以要自己做。想实时检测,是需要花费代价的。

gujiwubian 发表于 2008-6-17 15:11:29

回复 #5 winston 的帖子

恩,谢谢,我明白了,不过我还想问问,除了心跳包的话,还有其他更好的办法么??

winston 发表于 2008-6-17 21:03:29

没有,至少我没听说过。

minglong717 发表于 2008-6-18 15:07:10

关注...我也需要解决这个问题...
目前客户端有 close()函数调用...服务器端可以接收到客户端断开的消息...
但是...如果客户端非正常退出的话...服务器就没办法挨了...

winston 发表于 2008-6-18 15:23:22

尽量友好的处理链接的关闭,这个很重要。
在异常断开的时候,要有判断的办法。

wj4064 发表于 2008-6-20 16:16:05

还是心跳包比较实用:) :)
页: [1] 2
查看完整版本: 如何通过ACE检测客户端已经断线??急!!!