2011-12-22 2 views
0

이 기능은 내가 원했던대로 작동하지 않습니다.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 

서버 (호스트)가 느려지거나 존재하지 않으면 위 예제는 현재 스크립트를 잠급니다. 시간 초과되지 않습니다. 왜 그런가? 내가

그것은 서버 (호스트)가 존재하는 경우로 aspected하게 작동하는 루비 1.9.2를 사용하고 있습니다

.

+0

FWIW, ruby ​​1.9.3p0 (2011-10-30) [x86_64-linux]에서 작동합니다. – Sam

답변

0

타임 아웃 블록이 작동했습니다. #send이라는 코드가 문제였습니다.

관련 문제