Skip to content
class method

Socket.getaddrinfo

(::String peer, ::String | ::Integer | nil protocol, ?::Integer | ::Symbol | nil family, ?::Integer | ::Symbol | nil socktype, ?::Integer | ::Symbol | nil protocol, ?::Integer | nil flags) -> [ ::String, ::Integer, ::String, ::String, ::Integer, ::Integer, ::Integer ]
(::String? peer, ::String | ::Integer protocol, ?::Integer | ::Symbol | nil family, ?::Integer | ::Symbol | nil socktype, ?::Integer | ::Symbol | nil protocol, ?::Integer | nil flags) -> [ ::String, ::Integer, ::String, ::String, ::Integer, ::Integer, ::Integer ]
Socket.getaddrinfo(nodename, servname[, family[, socktype[, protocol[, flags[, reverse_lookup]]]]]) => array

Obtains address information for nodename:servname.

Note that Addrinfo.getaddrinfo provides the same functionality in an object oriented style.

family should be an address family such as: :INET, :INET6, etc.

socktype should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.

protocol should be a protocol defined in the family, and defaults to 0 for the family.

flags should be bitwise OR of Socket::AI_* constants.

Example
Socket.getaddrinfo("www.ruby-lang.org", "http", nil, :STREAM)
#=> [["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68", 2, 1, 6]] # PF_INET/SOCK_STREAM/IPPROTO_TCP

Socket.getaddrinfo("localhost", nil)
#=> [["AF_INET", 0, "localhost", "127.0.0.1", 2, 1, 6],  # PF_INET/SOCK_STREAM/IPPROTO_TCP
#    ["AF_INET", 0, "localhost", "127.0.0.1", 2, 2, 17], # PF_INET/SOCK_DGRAM/IPPROTO_UDP
#    ["AF_INET", 0, "localhost", "127.0.0.1", 2, 3, 0]]  # PF_INET/SOCK_RAW/IPPROTO_IP

reverse_lookup directs the form of the third element, and has to be one of below. If reverse_lookup is omitted, the default value is nil.

+true+, +:hostname+:  hostname is obtained from numeric address using reverse lookup, which may take a time.
+false+, +:numeric+:  hostname is the same as numeric address.
+nil+:              obey to the current +do_not_reverse_lookup+ flag.

If Addrinfo object is preferred, use Addrinfo.getaddrinfo.

See also .accept_loop .gethostbyaddr .gethostbyname also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0