Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →
class method
Socket.gethostbyname
(::String name) -> [ ::String, ::Array[::String], ::Integer, ::String ]
Socket.gethostbyname(hostname) => [official_hostname, alias_hostnames, address_family, *address_list]
ext/socket/socket.c
View on GitHub ↗
static VALUE
sock_s_gethostbyname(VALUE obj, VALUE host)
{
rb_warn("Socket.gethostbyname is deprecated; use Addrinfo.getaddrinfo instead.");
struct rb_addrinfo *res =
rsock_addrinfo(host, Qnil, AF_UNSPEC, SOCK_STREAM, AI_CANONNAME);
return rsock_make_hostent(host, res, sock_sockaddr);
}
Use Addrinfo.getaddrinfo instead. This method is deprecated for the following reasons:
-
The 3rd element of the result is the address family of the first address. The address families of the rest of the addresses are not returned.
-
Uncommon address representation: 4/16-bytes binary string to represent IPv4/IPv6 address.
-
gethostbyname() may take a long time and it may block other threads. (GVL cannot be released since gethostbyname() is not thread safe.)
-
This method uses gethostbyname() function already removed from POSIX.
This method obtains the host information for hostname.
Example
p Socket.gethostbyname("hal") #=> ["localhost", ["hal"], 2, "\x7F\x00\x00\x01"]