Guest

Untitled

By: a guest on Jan 28th, 2012  |  syntax: None  |  size: 1.01 KB  |  hits: 25  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. def validate_port(server,port)
  2.     ret_value = false
  3.     begin
  4.       addr = Socket.getaddrinfo(server,nil)
  5.       socket = Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0)
  6.       secs = Integer(1)
  7.       usecs = Integer(0)
  8.       optval = [secs, usecs].pack("l_2")
  9.       puts "optval: #{optval.inspect}"
  10.       rc = socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, optval)
  11.       puts "rc: #{rc}"
  12.       rc =socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_SNDTIMEO, optval)
  13.       puts "rc: #{rc}"
  14.       puts ">>> TCPSocket.connect"
  15.       socket.connect(Socket.pack_sockaddr_in(port, addr[0][3]))
  16.       puts "<<< TCPSocket.connect"
  17.       ret_value = true
  18.       socket.close
  19.     rescue SocketError
  20.       puts "SocketError (no host): #{$!.inspect}"
  21.     rescue Errno::ECONNREFUSED
  22.       puts "Connection refused (caught)"
  23.     rescue Errno::ETIMEDOUT
  24.       puts "Host not online (caught)"
  25.     rescue
  26.       puts "EXCEPTION: #{$!.inspect} class=#{$!.class}"
  27.     end
  28.     return ret_value
  29.   end