Ruby 2.4

Resolv::IPv6

class Resolv::IPv6

父类:Object

Resolv :: DNS IPv6地址。

常量

正则表达式

一个复合IPv6地址Regexp。

Regex_6Hex4Dec

IPv4映射的IPv6地址格式a:b:c:d:e:f:wxyz

Regex_8Hex

IPv6地址格式a:b:c:d:e:f:g:h

Regex_CompressedHex

压缩的IPv6地址格式a :: b

Regex_CompressedHex4Dec

压缩的IPv4映射的IPv6地址格式a :: b:wxyz

属性

addressR

作为String的原始IPv6地址。

公共类方法

创建(arg)显示源

创建一个新的IPv6地址,arg其中可能是:

IPv6

返回arg

arg 必须匹配其中一个IPv6 :: Regex *常量

# File lib/resolv.rb, line 2442 def self.create(arg) case arg when IPv6 return arg when String address = ''.b if Regex_8Hex =~ arg arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')} elsif Regex_CompressedHex =~ arg prefix = $1 suffix = $2 a1 = ''.b a2 = ''.b prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')} suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')} omitlen = 16 - a1.length - a2.length address << a1 << "\0" * omitlen << a2 elsif Regex_6Hex4Dec =~ arg prefix, a, b, c, d = $1, $2.to_i, $3.to_i, $4.to_i, $5.to_i if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d prefix.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')} address << [a, b, c, d].pack('CCCC') else raise ArgumentError.new("not numeric IPv6 address: " + arg) end elsif Regex_CompressedHex4Dec =~ arg prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d a1 = ''.b a2 = ''.b prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')} suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')} omitlen = 12 - a1.length - a2.length address << a1 << "\0" * omitlen << a2 << [a, b, c, d].pack('CCCC') else raise ArgumentError.new("not numeric IPv6 address: " + arg) end else raise ArgumentError.new("not numeric IPv6 address: " + arg) end return IPv6.new(address) else raise ArgumentError.new("cannot interpret as IPv6 address: #{arg.inspect}") end end

公共实例方法

to_name()显示源

将此IPv6地址转换为Resolv :: DNS :: Name。

# File lib/resolv.rb, line 2517 def to_name return DNS::Name.new( @address.unpack("H32")[0].split(//).reverse + ['ip6', 'arpa']) end