class Net::TCPClient::Address

Host name, ip address and port to connect to

Attributes

host_name[RW]
ip_address[RW]
port[RW]

Public Class Methods

addresses(dns_name, port) click to toggle source

Returns [Array<Net::TCPClient::Address>] addresses for a given DNS / host name. The Addresses will contain the resolved ip address, host name, and port number.

Note:

Multiple ip addresses will be returned when a DNS entry has multiple ip addresses associated with it.
# File lib/net/tcp_client/address.rb, line 24
def self.addresses(dns_name, port)
  ip_addresses(dns_name).collect { |ip| new(dns_name, ip, port) }
end
addresses_for_server_name(server_name) click to toggle source

Returns [Array<Net::TCPClient::Address>] addresses for a list of DNS / host name's that are paired with their numbers

server_name should be either a host_name, or ip address combined with a port:

"host_name:1234"
"192.168.1.10:80"
# File lib/net/tcp_client/address.rb, line 34
def self.addresses_for_server_name(server_name)
  dns_name, port = server_name.split(':')
  port           = port.to_i
  raise(ArgumentError, "Invalid host_name: #{server_name.inspect}. Must be formatted as 'host_name:1234' or '192.168.1.10:80'") unless dns_name && (port > 0)
  addresses(dns_name, port)
end
ip_addresses(dns_name) click to toggle source

Returns [Array<String>] ip addresses for the supplied DNS entry Returns dns_name if it is already an IP Address

# File lib/net/tcp_client/address.rb, line 11
def self.ip_addresses(dns_name)
  ips = []
  Socket.getaddrinfo(dns_name, nil, Socket::AF_INET, Socket::SOCK_STREAM).each do |s|
    ips << s[3] if s[0] == 'AF_INET'
  end
  ips.uniq
end
new(host_name, ip_address, port) click to toggle source
# File lib/net/tcp_client/address.rb, line 41
def initialize(host_name, ip_address, port)
  @host_name  = host_name
  @ip_address = ip_address
  @port       = port.to_i
end

Public Instance Methods

to_s() click to toggle source
# File lib/net/tcp_client/address.rb, line 47
def to_s
  "#{host_name}[#{ip_address}]:#{port}"
end