2011-12-22 60 views
0

我有這個sniped,不會按我想要的那樣工作。UDP套接字不會超時

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

它的工作原理當服務器(主機)存在的aspected。

+0

FWIW,這個工程在ruby 1.9.3p0(2011-10-30)[x86_64-linux]。 – Sam 2011-12-22 16:50:29

回答

0

超時模塊工作,它是代碼,調用#send這是問題。