Class: Addrinfo
- Inherits:
-
Object
- Object
- Addrinfo
- Defined in:
- mrbgems/mruby-socket/mrblib/socket.rb
Instance Attribute Summary collapse
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
-
#socktype ⇒ Object
readonly
Returns the value of attribute socktype.
Class Method Summary collapse
- .foreach(nodename, service, family = nil, socktype = nil, protocol = nil, flags = 0, &block) ⇒ Object
- .ip(host) ⇒ Object
- .tcp(host, port) ⇒ Object
- .udp(host, port) ⇒ Object
- .unix(path, socktype = Socket::SOCK_STREAM) ⇒ Object
Instance Method Summary collapse
- #_to_array ⇒ Object
- #afamily ⇒ Object
-
#initialize(sockaddr, family = Socket::PF_UNSPEC, socktype = 0, protocol = 0) ⇒ Addrinfo
constructor
A new instance of Addrinfo.
-
#inspect ⇒ Object
def family_addrinfo(host, port=nil) def getnameinfo(flags=0) Socket.getnameinfo end.
- #inspect_sockaddr ⇒ Object
- #ip? ⇒ Boolean
- #ip_address ⇒ Object
- #ip_port ⇒ Object
- #ip_unpack ⇒ Object
- #ipv4? ⇒ Boolean
-
#ipv6? ⇒ Boolean
def ipv4_loopback? def ipv4_multicast? def ipv4_private?.
-
#pfamily ⇒ Object
def ipv6_loopback? def ipv6_mc_global? def ipv6_mc_linklocal? def ipv6_mc_nodelocal? def ipv6_mc_orilocal? def ipv6_mc_sitelocal? def ipv6_multicast? def ipv6_to_ipv4 def ipv6_unspecified def ipv6_v4compat? def ipv6_v4mapped? def listen(backlog=5).
- #to_sockaddr ⇒ Object (also: #to_s)
- #unix? ⇒ Boolean
Constructor Details
#initialize(sockaddr, family = Socket::PF_UNSPEC, socktype = 0, protocol = 0) ⇒ Addrinfo
Returns a new instance of Addrinfo.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 2 def initialize(sockaddr, family=Socket::PF_UNSPEC, socktype=0, protocol=0) @hostname = nil if sockaddr.is_a? Array sary = sockaddr if sary[0] == 'AF_INET' || sary[0] == 'AF_INET6' @sockaddr = Socket.sockaddr_in(sary[1], sary[3]) @hostname = sary[2] elsif sary[0] == 'AF_UNIX' @sockaddr = Socket.sockaddr_un(sary[1]) end else @sockaddr = sockaddr.dup end if family == Socket::PF_UNSPEC or family == nil @family = Socket._sockaddr_family(@sockaddr) else @family = family end @socktype = socktype @protocol = protocol end |
Instance Attribute Details
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
136 137 138 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 136 def protocol @protocol end |
#socktype ⇒ Object (readonly)
Returns the value of attribute socktype.
137 138 139 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 137 def socktype @socktype end |
Class Method Details
.foreach(nodename, service, family = nil, socktype = nil, protocol = nil, flags = 0, &block) ⇒ Object
24 25 26 27 28 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 24 def self.foreach(nodename, service, family=nil, socktype=nil, protocol=nil, flags=0, &block) a = self.getaddrinfo(nodename, service, family, socktype, protocol, flags) a.each { |ai| block.call(ai) } a end |
.ip(host) ⇒ Object
30 31 32 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 30 def self.ip(host) Addrinfo.new(Socket.sockaddr_in(0, host)) end |
.tcp(host, port) ⇒ Object
34 35 36 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 34 def self.tcp(host, port) Addrinfo.getaddrinfo(host, port, nil, Socket::SOCK_STREAM, Socket::IPPROTO_TCP)[0] end |
.udp(host, port) ⇒ Object
38 39 40 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 38 def self.udp(host, port) Addrinfo.getaddrinfo(host, port, nil, Socket::SOCK_DGRAM, Socket::IPPROTO_UDP)[0] end |
.unix(path, socktype = Socket::SOCK_STREAM) ⇒ Object
42 43 44 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 42 def self.unix(path, socktype=Socket::SOCK_STREAM) Addrinfo.new(Socket.sockaddr_un(path), Socket::AF_UNIX, socktype) end |
Instance Method Details
#_to_array ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 139 def _to_array case @family when Socket::AF_INET s = "AF_INET" when Socket::AF_INET6 s = "AF_INET6" when Socket::AF_UNIX s = "AF_UNIX" else s = "(unknown AF)" end addr, port = self.getnameinfo(Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV) [ s, port.to_i, addr, addr ] end |
#afamily ⇒ Object
46 47 48 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 46 def afamily @family end |
#inspect ⇒ Object
def family_addrinfo(host, port=nil) def getnameinfo(flags=0) Socket.getnameinfo end
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 61 def inspect if ipv4? or ipv6? if @protocol == Socket::IPPROTO_TCP or (@socktype == Socket::SOCK_STREAM and @protocol == 0) proto = 'TCP' elsif @protocol == Socket::IPPROTO_UDP or (@socktype == Socket::SOCK_DGRAM and @protocol == 0) proto = 'UDP' else proto = '???' end else proto = "SOCK_STREAM" end "#<Addrinfo: #{inspect_sockaddr} #{proto}>" end |
#inspect_sockaddr ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 76 def inspect_sockaddr if ipv4? a, p = ip_unpack "#{a}:#{p}" elsif ipv6? a, p = ip_unpack "[#{a}]:#{p}" elsif unix? unix_path else '???' end end |
#ip? ⇒ Boolean
90 91 92 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 90 def ip? ipv4? or ipv6? end |
#ip_address ⇒ Object
94 95 96 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 94 def ip_address ip_unpack[0] end |
#ip_port ⇒ Object
98 99 100 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 98 def ip_port ip_unpack[1] end |
#ip_unpack ⇒ Object
102 103 104 105 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 102 def ip_unpack h, p = getnameinfo(Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV) [ h, p.to_i ] end |
#ipv4? ⇒ Boolean
107 108 109 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 107 def ipv4? @family == Socket::AF_INET end |
#ipv6? ⇒ Boolean
def ipv4_loopback? def ipv4_multicast? def ipv4_private?
115 116 117 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 115 def ipv6? @family == Socket::AF_INET6 end |
#pfamily ⇒ Object
def ipv6_loopback? def ipv6_mc_global? def ipv6_mc_linklocal? def ipv6_mc_nodelocal? def ipv6_mc_orilocal? def ipv6_mc_sitelocal? def ipv6_multicast? def ipv6_to_ipv4 def ipv6_unspecified def ipv6_v4compat? def ipv6_v4mapped? def listen(backlog=5)
132 133 134 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 132 def pfamily @family end |
#to_sockaddr ⇒ Object Also known as: to_s
154 155 156 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 154 def to_sockaddr @sockaddr end |
#unix? ⇒ Boolean
160 161 162 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 160 def unix? @family == Socket::AF_UNIX end |