Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →
class method
Socket.sockaddr_in
(::Integer port, ::String ip) -> ::String
Socket.sockaddr_in(port, host) => sockaddr
Socket.pack_sockaddr_in(port, host) => sockaddr
ext/socket/socket.c
View on GitHub ↗
static VALUE
sock_s_pack_sockaddr_in(VALUE self, VALUE port, VALUE host)
{
struct rb_addrinfo *res = rsock_addrinfo(host, port, AF_UNSPEC, 0, 0);
VALUE addr = rb_str_new((char*)res->ai->ai_addr, res->ai->ai_addrlen);
rb_freeaddrinfo(res);
return addr;
}
Packs port and host as an AF_INET/AF_INET6 sockaddr string.
Example
Socket.sockaddr_in(80, "127.0.0.1") #=> "\x02\x00\x00P\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00" Socket.sockaddr_in(80, "::1") #=> "\n\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00"
See also
.second_to_timeout
.sockaddr_un
.resolve_hostname
.socketpair
also in
4.1 · 4.0 · 3.3 · 3.2 · 3.1 · 3.0