所以,我有以下代码:

  def LSCPHandler.send_message(message, hostname, port)
s = TCPSocket.open(hostname, port)
s.print message
ret = s.recv(1024)
s.close 
LSCPHandler.parse_error(ret)
return ret  

刚刚精品工程,正常。服务器我说要返回响应很快,通常情况下,一切都很好。

然后,今天出事了与服务器。不是我的问题,但是,这导致了我的整个应用程序挂,等待的recv超时。这不正是最佳。

有没有办法超时recv的,如果我回去马上不”听到什么了?我试图寻找红宝石文档,但它确实让我困惑(即的TCPSocket只实现了三个方法,他们没有打开或recv,它的父类的Socket没有任何implemente这些方法。而Socket的父类似乎对象?我throughly混淆)

有帮助吗?

解决方案

您可以设置接收套接字上的超时套接字选项的东西比默认别人。棘手位是选择一个合适的数字,在所有用例仍然有效,即你不希望你的recv呼叫超时为时尚早。

s.setsockopt(Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, <timeout>)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top