模块 IPSocket

公共类方法

getaddress(s) 点击切换源代码

返回一个基于 String 表示的有效 DNS 主机名、IPv4 或 IPv6 地址。

IPSocket.getaddress 'localhost'         #=> "::1"
IPSocket.getaddress 'broadcasthost'     #=> "255.255.255.255"
IPSocket.getaddress 'www.ruby-lang.org' #=> "221.186.184.68"
IPSocket.getaddress 'www.ccc.de'        #=> "2a00:1328:e102:ccc0::122"
# File ipaddr.rb, line 833
def getaddress(s)
  if valid_v6?(s)
    s
  else
    getaddress_orig(s)
  end
end
也别名为:getaddress_orig
getaddress_orig(s)
别名:getaddress

私有类方法

valid_v6?(addr) 点击切换源代码
# File ipaddr.rb, line 803
def valid_v6?(addr)
  case addr
  when IPAddr::RE_IPV6ADDRLIKE_FULL
    if $2
      $~[2,4].all? {|i| i.to_i < 256 }
    else
      true
    end
  when IPAddr::RE_IPV6ADDRLIKE_COMPRESSED
    if $4
      addr.count(':') <= 6 && $~[4,4].all? {|i| i.to_i < 256}
    else
      addr.count(':') <= 7
    end
  else
    false
  end
end