foreach

foreach(nodename, service, family=nil, socktype=nil, protocol=nil, flags=nil, &block) Class Public methods iterates over the list of Addrinfo objects obtained by ::getaddrinfo. Addrinfo.foreach(nil, 80) {|x| p x } #=> #<Addrinfo: 127.0.0.1:80 TCP (:80)> # #<Addrinfo: 127.0.0.1:80 UDP (:80)> # #<Addrinfo: [::1]:80 TCP (:80)> # #<Addrinfo: [::1]:80 UDP (:80)>

getaddrinfo

Addrinfo.getaddrinfo(nodename, service, family, socktype, protocol, flags) => [addrinfo, ...]Addrinfo.getaddrinfo(nodename, service, family, socktype, protocol) => [addrinfo, ...]Addrinfo.getaddrinfo(nodename, service, family, socktype) => [addrinfo, ...]Addrinfo.getaddrinfo(nodename, service, family) => [addrinfo, ...]Addrinfo.getaddrinfo(nodename, service) => [addrinfo, ...] Class P

ip

Addrinfo.ip(host) => addrinfo Class Public methods returns an addrinfo object for IP address. The port, socktype, protocol of the result is filled by zero. So, it is not appropriate to create a socket. Addrinfo.ip("localhost") #=> #<Addrinfo: 127.0.0.1 (localhost)>

new

Addrinfo.new(sockaddr) => addrinfoAddrinfo.new(sockaddr, family) => addrinfoAddrinfo.new(sockaddr, family, socktype) => addrinfoAddrinfo.new(sockaddr, family, socktype, protocol) => addrinfo Class Public methods returns a new instance of Addrinfo. The instance contains sockaddr, family, socktype, protocol. sockaddr means struct sockaddr which can be used for connect(2), etc. family, socktype and protocol are int

tcp

Addrinfo.tcp(host, port) => addrinfo Class Public methods returns an addrinfo object for TCP address. Addrinfo.tcp("localhost", "smtp") #=> #<Addrinfo: 127.0.0.1:25 TCP (localhost:smtp)>

udp

Addrinfo.udp(host, port) => addrinfo Class Public methods returns an addrinfo object for UDP address. Addrinfo.udp("localhost", "daytime") #=> #<Addrinfo: 127.0.0.1:13 UDP (localhost:daytime)>

unix

Addrinfo.unix(path [, socktype]) => addrinfo Class Public methods returns an addrinfo object for UNIX socket address. socktype specifies the socket type. If it is omitted, :STREAM is used. Addrinfo.unix("/tmp/sock") #=> #<Addrinfo: /tmp/sock SOCK_STREAM> Addrinfo.unix("/tmp/sock", :DGRAM) #=> #<Addrinfo: /tmp/sock SOCK_DGRAM>

afamily

addrinfo.afamily => integer Instance Public methods returns the address family as an integer. Addrinfo.tcp("localhost", 80).afamily == Socket::AF_INET #=> true

bind

bind() Instance Public methods creates a socket bound to self. If a block is given, it is called with the socket and the value of the block is returned. The socket is returned otherwise. Addrinfo.udp("0.0.0.0", 9981).bind {|s| s.local_address.connect {|s| s.send "hello", 0 } p s.recv(10) #=> "hello" }

canonname

addrinfo.canonname => string or nil Instance Public methods returns the canonical name as an string. nil is returned if no canonical name. The canonical name is set by ::getaddrinfo when AI_CANONNAME is specified. list = Addrinfo.getaddrinfo("www.ruby-lang.org", 80, :INET, :STREAM, nil, Socket::AI_CANONNAME) p list[0] #=> #<Addrinfo: 221.186.184.68:80 TCP carbon.ruby-lang.org (www.ruby-lang.org)> p list[0].canonname #=> "carbon.ruby-lang.org"