开发者

Removing the last IP Address Octet in Ruby

In Ruby, I开发者_运维百科'm wanting to take my local IP address and convert it into my network id (e.g. 192.168.1.1 to 192.168.1.0)

require "socket"
local_ip = UDPSocket.open {|s| s.connect("64.233.187.99", 1); s.addr.last}

This will give me my local ip, but how can I remove the last octet up to the dot(.)?


quick and dirty way would be something like

"192.168.1.1".rpartition(".")[0]
=> "192.168.1"

but if you know subnet mask or if you are running on subnets other than 24 bits (255.255.255.0), you should use IPAddr module, since network of those can be differ based on subnets.

> require 'IPAddr'
=> true
>  
> IPAddr.new("64.233.187.99/24").to_s
=> "64.233.187.0"

> IPAddr.new("64.233.187.99/20").to_s
=> "64.233.176.0"

refs:

  • http://ruby-doc.org/stdlib/libdoc/ipaddr/rdoc/index.html
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜