$ irb
1.9.3-p448 :001 > require 'socket'
=> true
1.9.3-p448 :002 > TCPSocket.new('www.example.com', 111)
gives
Errno::ETIMEDOUT:操作超时 - 连接(2)
问题:
- 我如何定义超时值
TCPSocket.new
?
- 如何正确捕获超时(或者一般来说,套接字)异常?
至少从2.0开始,人们可以简单地使用Socket::tcp https://ruby-doc.org/stdlib-2.0.0/libdoc/socket/rdoc/Socket.html#method-c-tcp:
Socket.tcp("www.ruby-lang.org", 10567, connect_timeout: 5) {}
请注意表达式末尾的块,该块用于在建立连接时关闭连接。
对于旧版本,@faltru 答案似乎是最好的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)