要約
IP アドレスを表すクラスです。IPv4 と IPv6 のどちらのアドレスも表せます。
例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>
参照
目次
- 特異メソッド
- インスタンスメソッド
- protectedメソッド
- 定数
特異メソッド
new(addr = '::', family = Socket::AF_UNSPEC) -> IPAddr[permalink][rdoc][edit]-
新しい 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 を指定した場合に発生します。
- [PARAM]
new_ntoh(addr) -> IPAddr[permalink][rdoc][edit]-
ネットワークバイトオーダーのバイト列から IPAddr オブジェクトを生成します。
- [PARAM]
addr: - ネットワークバイトオーダーのバイト列。
require 'ipaddr' p IPAddr.new_ntoh("\300\250\001\001") # => <IPAddr: IPv4:192.168.1.1/255.255.255.255> - [PARAM]
ntop(addr) -> String[permalink][rdoc][edit]-
ネットワークバイトオーダーのバイト列で表現された IP アドレスを人間の読める形式に変換します。
- [PARAM]
addr: - ネットワークバイトオーダーのバイト列。
- [PARAM]
インスタンスメソッド
self & ipaddr -> IPAddr[permalink][rdoc][edit]-
他の IPAddr オブジェクトとのビットごとの論理積により、新しい IPAddr オブジェクトを生成します。
- [PARAM]
ipaddr: - 他の IPAddr オブジェクト。また、数値や文字列も受け付けます。
- [PARAM]
self << num -> IPAddr[permalink][rdoc][edit]-
ビットごとの左シフト演算により、新しい IPAddr オブジェクトを生成します。
- [PARAM]
num: - 左シフトする桁数。
- [PARAM]
self <=> other -> -1 | 0 | 1 | nil[permalink][rdoc][edit]-
self と other を比較します。
- [PARAM]
other: - 比較対象の IPAddr オブジェクト。
- [RETURN]
- self と other のアドレスファミリが一致しない場合は nil を返します。アドレスファミリが一致する場合は、両方の数値表現を Integer#<=> で比較した結果を返します。
[SEE_ALSO] Integer#<=>
- [PARAM]
self == ipaddr -> bool[permalink][rdoc][edit]-
IPAddr オブジェクト同士が等しいかを比較します。
- [PARAM]
ipaddr: - 比較対象の IPAddr オブジェクト。また、数値や文字列も受け付けます。
require "ipaddr" p IPAddr.new("192.168.0.1") == IPAddr.new("192.168.0.1/24") # => false - [PARAM]
include?(ipaddr) -> bool[permalink][rdoc][edit]self === ipaddr -> bool-
与えられた IPAddr オブジェクトが自身の範囲に入っているかを判定します。
- [PARAM]
ipaddr: - 範囲に入っているかどうか調べる対象となる IPAddr オブジェクト。また、数値や文字列も受け付けます。
- [PARAM]
self >> num -> IPAddr[permalink][rdoc][edit]-
ビットごとの右シフト演算により、新しい IPAddr オブジェクトを生成します。
- [PARAM]
num: - 右シフトする桁数。
- [PARAM]
eql?(other) -> boolRuby 1.9.3 から[permalink][rdoc][edit]-
自身が other と等しい場合は真を返します。そうでない場合は偽を返します。
[SEE_ALSO] Object#eql?
family -> Integer[permalink][rdoc][edit]-
このオブジェクトのアドレスファミリを返します。
[SEE_ALSO] Socket
hash -> IntegerRuby 1.9.3 から[permalink][rdoc][edit]-
ハッシュ値を返します。
[SEE_ALSO] Object#hash
hton -> String[permalink][rdoc][edit]-
ネットワークオーダーのバイト列に変換します。
inspect -> String[permalink][rdoc][edit]-
オブジェクトを人間が読める形式に変換した文字列を返します。
ip6_arpa -> String[permalink][rdoc][edit]-
IPv6 なら [RFC3172] で定義された形式で DNS 逆引きのための文字列を返します。 IPv4 の場合は例外を発生します。
ip6_int -> String[permalink][rdoc][edit]-
IPv6 なら [RFC1886] 互換形式で DNS 逆引きのための文字列を返します。 IPv4 の場合は例外を発生します。
ipv4? -> bool[permalink][rdoc][edit]-
IPv4 なら真を返します。
ipv4_compat -> IPAddr[permalink][rdoc][edit]-
IPv4 アドレスから IPv4 互換 IPv6 アドレスの新しい IPAddr オブジェクトを返します。
ipv4_compat? -> bool[permalink][rdoc][edit]-
IPv4 互換 IPv6 アドレスなら 真を返します。
ipv4_mapped -> IPAddr[permalink][rdoc][edit]-
IPv4 アドレスから IPv4 射影 IPv6 アドレスの新しい IPAddr オブジェクトを返します。
ipv4_mapped? -> bool[permalink][rdoc][edit]-
IPv4 射影 IPv6 アドレスなら 真を返します。
ipv6? -> bool[permalink][rdoc][edit]-
IPv6 なら真を返します。
link_local? -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
例selfがリンクローカルアドレスなら真を返します。[RFC3927] で予約された IPv4 の 169.254.0.0/16 と、[RFC4291] で予約された IPv6 のリンクローカルユニキャストアドレス fe80::/10 がリンクローカルとみなされます。IPv4 射影 IPv6 アドレス範囲内のリンクローカルな IPv4 アドレスもリンクローカルとみなされます。require "ipaddr" p IPAddr.new("169.254.1.1").link_local? # => true p IPAddr.new("fe80::1").link_local? # => true p IPAddr.new("192.168.1.1").link_local? # => false loopback? -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
例selfがループバックアドレスなら真を返します。IPv4 の 127.0.0.0/8 と IPv6 の ::1 がループバックアドレスとみなされます。IPv4 射影 IPv6 アドレス範囲内のループバックな IPv4 アドレスもループバックとみなされます。require "ipaddr" p IPAddr.new("127.0.0.1").loopback? # => true p IPAddr.new("::1").loopback? # => true p IPAddr.new("192.168.1.1").loopback? # => false mask(prefixlen) -> IPAddr[permalink][rdoc][edit]-
マスクされた新しい IPAddr オブジェクトを返します。引数にはプリフィックス長とマスクの両方を受け付けます (e.g. 8, 64, "255.255.255.0")。
- [PARAM]
prefixlen: - プリフィックス長またはマスクを表す数値か文字列。
- [PARAM]
native -> self | IPAddr[permalink][rdoc][edit]-
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> netmask -> StringRuby 3.1 から[permalink][rdoc][edit]-
サブネットマスクを文字列表現で返します(例: 255.255.0.0)。
例require "ipaddr" p IPAddr.new("192.168.0.0/16").netmask # => "255.255.0.0" p IPAddr.new("2001:db8::/32").netmask # => "ffff:ffff:0000:0000:0000:0000:0000:0000" prefix -> IntegerRuby 2.5.0 から[permalink][rdoc][edit]-
プリフィックス長をビット数で返します。
prefix=(prefixlen)Ruby 2.5.0 から[permalink][rdoc][edit]-
プリフィックス長を prefixlen に設定します。
- [PARAM]
prefixlen: - 設定したいプリフィックス長をビット数で指定します。
- [EXCEPTION]
IPAddr::InvalidPrefixError: - 引数 prefixlen に整数以外のオブジェクトを指定した場合に発生します。
- [PARAM]
private? -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
例selfがプライベートアドレスなら真を返します。[RFC1918] で定義された IPv4 の 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 と、[RFC4193] で定義された IPv6 のユニークローカルアドレス fc00::/7 がプライベートアドレスとみなされます。IPv4 射影 IPv6 アドレス範囲内のプライベートな IPv4 アドレスもプライベートとみなされます。require "ipaddr" p IPAddr.new("192.168.1.1").private? # => true p IPAddr.new("10.1.2.3").private? # => true p IPAddr.new("8.8.8.8").private? # => false p IPAddr.new("fc00::1").private? # => true reverse -> String[permalink][rdoc][edit]-
DNS 逆引きのための文字列を返します。 IPv6 なら [RFC3172] で定義された形式で返します。
例require "ipaddr" p IPAddr.new("192.168.0.1").reverse # => "1.0.168.192.in-addr.arpa" succ -> IPAddr[permalink][rdoc][edit]-
次の IPAddr オブジェクトを返します。
require 'ipaddr' ipaddr = IPAddr.new('192.168.1.1') p ipaddr.succ.to_s # => "192.168.1.2" to_i -> Integer[permalink][rdoc][edit]-
整数に変換します。
例require "ipaddr" p IPAddr.new("0.0.1.0").to_i # => 256 to_range -> Range[permalink][rdoc][edit]-
self の IP アドレスとサブネットマスクで取得できる IP アドレスの範囲を Range オブジェクトとして返します。
例require 'ipaddr' p 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> p 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][edit]-
文字列に変換します。
require 'ipaddr' addr6 = IPAddr.new('::1') p addr6.to_s # => "::1" p addr6.to_string # => "0000:0000:0000:0000:0000:0000:0000:0001"[SEE_ALSO] IPAddr#to_string
to_string -> String[permalink][rdoc][edit]-
標準的な文字列表現に変換します。
require 'ipaddr' addr6 = IPAddr.new('::1') p addr6.to_s # => "::1" p addr6.to_string # => "0000:0000:0000:0000:0000:0000:0000:0001"[SEE_ALSO] IPAddr#to_s
zone_id -> String | nilRuby 3.1 から[permalink][rdoc][edit]zone_id=(zid)-
IPv6 アドレスのゾーン ID を取得・設定します。ゾーン ID は
"%eth0"のように%から始まる文字列で、リンクローカルアドレスなどで通信に使うネットワークインターフェースを指定するために使われます。- [PARAM]
zid: -
設定するゾーン ID です。
%で始まる文字列か、ゾーン ID を削除する場合は nil を指定します。 - [RETURN]
- ゾーン ID が設定されていない場合は nil を返します。
- [EXCEPTION]
IPAddr::InvalidAddressError: -
selfが IPv6 アドレスでない場合に発生します(取得・設定のどちらでも発生します)。 - [EXCEPTION]
IPAddr::InvalidAddressError: -
zone_id=において、zidが nil でも%から始まる文字列でもない場合に発生します。
require "ipaddr" a = IPAddr.new("fe80::1%eth0") p a.zone_id # => "%eth0" b = IPAddr.new("fe80::1") b.zone_id = "%eth1" p b.zone_id # => "%eth1" p b.to_s # => "fe80::1%eth1"[SEE_ALSO] IPAddr#to_s
- [PARAM]
self | ipaddr -> IPAddr[permalink][rdoc][edit]-
他の IPAddr オブジェクトとのビットごとの論理和により、新しい IPAddr オブジェクトを生成します。
- [PARAM]
ipaddr: - 他の IPAddr オブジェクト。また、数値や文字列も受け付けます。
- [PARAM]
~ self -> IPAddr[permalink][rdoc][edit]-
ビットごとの論理否定により、新しい IPAddr オブジェクトを生成します。
protectedメソッド
mask!(mask) -> self[permalink][rdoc][edit]-
与えられた mask を使用してこのオブジェクトの IP アドレスを破壊的に変更します。
- [PARAM]
mask: - プレフィックス長を表す文字列か、サブネットマスクを表す文字列。
- [PARAM]
set(addr, *family) -> self[permalink][rdoc][edit]-
このオブジェクトの IP アドレスとアドレスファミリをセットして自身を返します。
- [PARAM]
addr: - セットする IP アドレスの数値表現。
- [PARAM]
family: - セットするアドレスファミリ。
- [PARAM]
定数
IN4MASK -> Integer[permalink][rdoc][edit]-
IPv4 アドレスの場合に使用するマスク値。
0xffffffff IN6FORMAT -> String[permalink][rdoc][edit]-
IPv6 アドレスをわかりやすく表示するためのフォーマット文字列。
"%.4x:%.4x:%.4x:%.4x:%.4x:%.4x:%.4x:%.4x" IN6MASK -> Integer[permalink][rdoc][edit]-
IPv6 アドレスの場合に使用するマスク値。
0xffffffffffffffffffffffffffffffff