2010-09-02 67 views
1

一直试图了解如何对我的ruby TCP服务器实现超时检测。主要是因为有时不稳定的互联网客户失去连接,我需要我的服务器来检测它。Ruby:TCPServer的连接超时检测

这个想法是教我的服务器检测连接已经沉默超过30秒并终止它。我一直试图使用超时,但它终止了程序,所以我需要使用类似于简单的计时器,它只会返回自所述计时器激活以来传递的整数秒。

有没有已经为此制定的解决方案?对不起,如果这是一个愚蠢的问题,它只是谷歌搜索它导致我无处。 ps:在这里使用红宝石1.8。

+0

为什么你的超时解决方案退出程序?如果没有,它会起作用吗? – maerics 2010-09-02 16:01:27

+0

它退出程序,因为它用于停止持续时间过长的进程。现在想想看,尝试暂停是一个非常愚蠢的想法,事实上,它根本没有任何帮助。 – Paul 2010-09-02 16:05:14

回答

0

“时间”对象可以通过将过去的秒数与先前创建的实例进行比较来报告过去的秒数。试想一下:

require 'time' 

t0 = Time.now 
sleep(2) 
t1 = Time.now 
t1.to_f - t0.to_f # => 2.00059294700623 

所以通过创建然后检查其差“最后传输”时对象“现在”你可以决定的通过秒数,采取相应的行动。

+0

非常感谢,这似乎是我需要的! – Paul 2010-09-02 16:09:07

+0

超时也可能有所帮助。 – rogerdpack 2010-09-02 18:42:59