Итак, у меня есть следующий код:
def LSCPHandler.send_message(message, hostname, port)
s = TCPSocket.open(hostname, port)
s.print message
ret = s.recv(1024)
s.close
LSCPHandler.parse_error(ret)
return ret
конец
Который работает нормально, нормально. Сервер, с которым я разговариваю, обычно возвращает ответ довольно быстро, и все хорошо.
Тогда сегодня что-то пошло не так с сервером. Не моя проблема, НО, это привело к зависанию всего моего приложения в ожидании истечения времени ожидания recv. Это не совсем оптимально.
Есть ли способ тайм-аута recv, если я не слышу что-то сразу? Я попытался просмотреть документацию по ruby, но это действительно смущает меня (то есть TCPSocket реализует только три метода, ни один из которых не открыт и не recv, и его родительский класс Socket также не реализует эти методы. И родительским классом Socket является Object ? Я в полном замешательстве)