202: def service_available?(host, port, wait=3)
203: if Rudy.sysinfo.vm == :java
204: begin
205: iadd = Java::InetSocketAddress.new host, port
206: socket = Java::Socket.new
207: socket.connect iadd, wait * 1000
208: success = !socket.isClosed && socket.isConnected
209: rescue NativeException => ex
210: puts ex.message, ex.backtrace if Rudy.debug?
211: false
212: end
213: else
214: begin
215: status = Timeout::timeout(wait) do
216: socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
217: sockaddr = Socket.pack_sockaddr_in( port, host )
218: socket.connect( sockaddr )
219: end
220: true
221: rescue Errno::EAFNOSUPPORT, Errno::ECONNREFUSED, SocketError, Timeout::Error => ex
222: puts ex.class, ex.message, ex.backtrace if Rudy.debug?
223: false
224: end
225: end
226: end