Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > ipaddrライブラリ > IPAddrクラス

class IPAddr

クラスの継承リスト: IPAddr < Object < Kernel < BasicObject

要約

IP アドレスを扱うのためのクラスです。

例:

require 'ipaddr'

ipaddr1 = IPAddr.new("3ffe:505:2::1")
p ipaddr1   # => #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>

ipaddr3 = IPAddr.new("192.168.2.0/24")
p ipaddr3   # => #<IPAddr: IPv4:192.168.2.0/255.255.255.0>

参照

目次

特異メソッド
new new_ntoh ntop
インスタンスメソッド
& << <=> == === include? >> eql? family hash hton inspect ip6_arpa ip6_int ipv4? ipv4_compat ipv4_compat? ipv4_mapped ipv4_mapped? ipv6? mask mask! native reverse set succ to_i to_range to_s to_string | ~
定数
IN4MASK IN6FORMAT IN6MASK

特異メソッド

new(addr = '::', family = Socket::AF_UNSPEC) -> IPAddr[permalink][rdoc]

新しい IPAddr オブジェクトを生成します。

[PARAM] addr:
0 から IPAddr::IN6MASK までの数値を受け取ります。 また、'address', 'address/prefixlen', 'address/mask' の形式も受け付けます。 プリフィックス長やマスクが指定されると、 マスクされた IPAddr オブジェクトを返します。 IPv6 アドレスの場合は、[ ] で囲まれていてもかまいません。
[PARAM] family:
family は自動的に判定されますが、明示的に指定することもできます。
[EXCEPTION] ArgumentError:
family が Socket::AF_UNSPEC の場合に発生します。
[EXCEPTION] ArgumentError:
family にサポートされていない address family を指定した場合に発生します。
new_ntoh(addr) -> IPAddr[permalink][rdoc]

ネットワークバイトオーダーのバイト列から IPAddr オブジェクトを生成します。

[PARAM] addr:
ネットワークバイトオーダーのバイト列。

例:

require 'ipaddr'
p IPAddr.new_ntoh("\300\250\001\001")   # => <IPAddr: IPv4:192.168.1.1/255.255.255.255>
ntop(addr) -> String[permalink][rdoc]

ネットワークバイトオーダーのバイト列で表現された IP アドレスを人間の読める形式に変換します。

[PARAM] addr:
ネットワークバイトオーダーのバイト列。

インスタンスメソッド

self & ipaddr -> IPAddr[permalink][rdoc]

他の IPAddr オブジェクトとのビットごとの論理積により、 新しい IPAddr オブジェクトを生成します。

[PARAM] ipaddr:
他の IPAddr オブジェクト。 また、数値や文字列も受け付けます。
self << num -> IPAddr[permalink][rdoc]

ビットごとの左シフト演算により、新しい IPAddr オブジェクトを生成します。

[PARAM] num:
左シフトする桁数。
self <=> other -> Integer | nil[permalink][rdoc]

self と other を比較します。

[PARAM] other:
比較対象の IPAddr オブジェクト。
[RETURN]
self と other のアドレスファミリが一致しない場合は nil を返します。 アドレスファミリが一致する場合は、両方の数値表現を Integer#<=> で比較した結果を返します。

[SEE_ALSO] Integer#<=>

self == ipaddr -> bool[permalink][rdoc]

IPAddr オブジェクト同士が等しいかを比較します。

[PARAM] ipaddr:
比較対象の IPAddr オブジェクト。 また、数値や文字列も受け付けます。

例:

require "ipaddr"
p IPAddr.new("192.168.0.1") == IPAddr.new("192.168.0.1/24")   # => false
include?(ipaddr) -> bool[permalink][rdoc]
self === ipaddr -> bool

与えられた IPAddr オブジェクトが自身の範囲に入っているかを判定します。

[PARAM] ipaddr:
範囲に入っているかどうか調べる対象となる IPAddr オブジェクト。 また、数値や文字列も受け付けます。
self >> num -> IPAddr[permalink][rdoc]

ビットごとの右シフト演算により、新しい IPAddr オブジェクトを生成します。

[PARAM] num:
右シフトする桁数。
eql?(other) -> bool[permalink][rdoc]

自身が other と等しい場合は真を返します。 そうでない場合は偽を返します。

[SEE_ALSO] Object#eql?

family -> Integer[permalink][rdoc]

このオブジェクトのアドレスファミリを返します。

[SEE_ALSO] Socket

hash -> Integer[permalink][rdoc]

ハッシュ値を返します。

[SEE_ALSO] Object#hash

hton -> String[permalink][rdoc]

ネットワークオーダーのバイト列に変換します。

inspect -> String[permalink][rdoc]

オブジェクトを人間が読める形式に変換した文字列を返します。

ip6_arpa -> String[permalink][rdoc]

IPv6 なら [RFC3172] で定義された形式で DNS 逆引きのための文字列を返します。 IPv4 の場合は例外を発生します。

ip6_int -> String[permalink][rdoc]

IPv6 なら [RFC1886] 互換形式で DNS 逆引きのための文字列を返します。 IPv4 の場合は例外を発生します。

ipv4? -> bool[permalink][rdoc]

IPv4 なら真を返します。

ipv4_compat -> IPAddr[permalink][rdoc]

IPv4 アドレスから IPv4 互換 IPv6 アドレスの 新しい IPAddr オブジェクトを返します。

ipv4_compat? -> bool[permalink][rdoc]

IPv4 互換 IPv6 アドレスなら 真を返します。

ipv4_mapped -> IPAddr[permalink][rdoc]

IPv4 アドレスから IPv4 射影 IPv6 アドレスの 新しい IPAddr オブジェクトを返します。

ipv4_mapped? -> bool[permalink][rdoc]

IPv4 射影 IPv6 アドレスなら 真を返します。

ipv6? -> bool[permalink][rdoc]

IPv6 なら真を返します。

mask(prefixlen) -> IPAddr[permalink][rdoc]

マスクされた新しい IPAddr オブジェクトを返します。 引数にはプリフィックス長とマスクの両方を受け付けます (e.g. 8, 64, "255.255.255.0")。

[PARAM] prefixlen:
プリフィックス長またはマスクを表す数値か文字列。
mask!(mask) -> self[permalink][rdoc]

与えられた mask を使用してこのオブジェクトの IP アドレスを破壊的に変更します。

[PARAM] mask:
プレフィックス長を表す文字列か、サブネットマスクを表す文字列。
native -> self | IPAddr[permalink][rdoc]

IPv4 射影 IPv6 アドレスや IPv4 互換 IPv6 アドレスから、 IPv4 アドレスの新しい IPAddr オブジェクトを返します。 IPv4 互換でも IPv4 組み込みでもないなら self を返します。

例:

require "ipaddr"
p IPAddr.new("0000:0000:0000:0000:0000:ffff:c0a8:0001").native
    # => #<IPAddr: IPv4:192.168.0.1/255.255.255.255>
reverse -> String[permalink][rdoc]

DNS 逆引きのための文字列を返します。 IPv6 なら [RFC3172] で定義された形式で返します。

例:

require "ipaddr"
p IPAddr.new("192.168.0.1").reverse   # => "1.0.168.192.in-addr.arpa"
set(addr, *family) -> self[permalink][rdoc]

このオブジェクトの IP アドレスとアドレスファミリをセットして自身を返します。

[PARAM] addr:
セットする IP アドレスの数値表現。
[PARAM] family:
セットするアドレスファミリ。
succ -> IPAddr[permalink][rdoc]

次の IPAddr オブジェクトを返します。

require 'ipaddr'
ipaddr = IPAddr.new('192.168.1.1')
p ipaddr.succ.to_s #=> "192.168.1.2"
to_i -> Integer[permalink][rdoc]

整数に変換します。

例:

require "ipaddr"
p IPAddr.new("0.0.1.0").to_i   # => 256
to_range -> Range[permalink][rdoc]

self の IP アドレスとサブネットマスクで取得できる IP アドレスの範囲を Range オブジェクトとして返します。

例:

require 'ipaddr'
IPAddr.new('192.168.1.1').to_range
#=> #<IPAddr: IPv4:192.168.1.1/255.255.255.255>..#<IPAddr: IPv4:192.168.1.1/255.255.255.255>
IPAddr.new('::1').to_range
#=> #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>..
#   #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
to_s -> String[permalink][rdoc]

文字列に変換します。

require 'ipaddr'
addr6 = IPAddr.new('::1')
addr6.to_s       #=> "::1"
addr6.to_string  #=> "0000:0000:0000:0000:0000:0000:0000:0001"

[SEE_ALSO] IPAddr#to_string

to_string -> String[permalink][rdoc]

標準的な文字列表現に変換します。

require 'ipaddr'
addr6 = IPAddr.new('::1')
addr6.to_s       #=> "::1"
addr6.to_string  #=> "0000:0000:0000:0000:0000:0000:0000:0001"

[SEE_ALSO] IPAddr#to_s

self | ipaddr -> IPAddr[permalink][rdoc]

他の IPAddr オブジェクトとのビットごとの論理和により、 新しい IPAddr オブジェクトを生成します。

[PARAM] ipaddr:
他の IPAddr オブジェクト。 また、数値や文字列も受け付けます。
~ self -> IPAddr[permalink][rdoc]

ビットごとの論理否定により、新しい IPAddr オブジェクトを生成します。

定数

IN4MASK -> Integer[permalink][rdoc]

IPv4 アドレスの場合に使用するマスク値。

0xffffffff
IN6FORMAT -> String[permalink][rdoc]

IPv6 アドレスをわかりやすく表示するためのフォーマット文字列。

"%.4x:%.4x:%.4x:%.4x:%.4x:%.4x:%.4x:%.4x"
IN6MASK -> Integer[permalink][rdoc]

IPv6 アドレスの場合に使用するマスク値。

0xffffffffffffffffffffffffffffffff