新手问题 Ruby 里 Socket 连接如何设置超时时间

xinac0421 · 2013年05月07日 · 最后由 xinac0421 回复于 2013年05月07日 · 5965 次阅读

Socket 连接时经常超时失败,每次都要等半分钟,如果连接的多,还要等的长。所以我想把连接超时的时间设短点,但没找到相关方法。windows 上貌似 Timeout 也不能用。 具体我想实现的是,TCPSocket.new(ip,sort) 时就能设置最大连接时间,我在 ruby2,0 的帮助里找到了相应方法:tcp(host, port, local_host=nil, local_port=nil, [opts]),最后一个参数说是可以设置超时时间,但 ruby1.9.3 里却没有,请问有没有什么方法?

我试了,在 windows 下貌似 Socket::SO_RCVTIMEO 这个属性没用??找不到这个参数

抱歉回答不了你的任何问题....刚注册会员,只是想问下怎么发帖

include Socket::Constants

#3 楼 @Rgzn 右上角有个发布新帖按钮,好像刚注册的不能马上发帖

#5 楼 @xinac0421 哦,原来还有这限定....新学 ruby,本来想问个问题....嗯...知道了,谢了

#4 楼 @reus 还是不行,代码如下。192.168.3.164 是没有 server 的,所以正常情况下会将近半分钟才会返回异常。我想把这时间设短点 require 'socket' include Socket::Constants sock = Socket.new(:INET,:STREAM ) sock.setsockopt(Socket::SOL_SOCKET,Socket::SO_RCVTIMEO,2000) sock.connect(Socket.sockaddr_in(2000, '192.168.3.164' ))

#7 楼 @xinac0421 你设的是 2000s 啊。。

#8 楼 @jjym 这里的 time 是毫秒,问题不是出在这里,就算设置成 1,也是一样的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号