Ruby TCPSocket 超时是如何定义的?

2024-02-11

$ 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(使用前将#替换为@)

Ruby TCPSocket 超时是如何定义的? 的相关文章

随机推荐