我嗤之以鼻,不会按照我的意愿行事。
def send(data)
socket = UDPSocket.open
Timeout::timeout(1.2) {
socket.send(data, 0, host, port)
resp = if select([socket], nil, nil, 3)
socket.recvfrom_nonblock(65536)
end
}
end
如果服务器(主机)要慢或不存在,上面的示例将锁定当前脚本。 它不会超时。知道为什么吗?
我正在使用Ruby 1.9.2
当服务器(主机)存在时,它可以正常工作。
答案 0 :(得分:1)
超时块工作正常,调用#send
的代码就是问题。