在Ruby中,我想获取本地IP地址并将其转换为我的网络ID(例如192.168.1.1到192.168.1.0)
require "socket"
local_ip = UDPSocket.open {|s| s.connect("64.233.187.99", 1); s.addr.last}
这会给我我的本地IP,但是如何删除最后一个八位字节到点(。)?
答案 0 :(得分:5)
快速而肮脏的方式就像
"192.168.1.1".rpartition(".")[0]
=> "192.168.1"
但是如果您知道子网掩码或者如果您运行的是24位(255.255.255.0)以外的子网,则应使用IPAddr
模块,因为这些模块的网络可能因子网而异。
> 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"
参考文献: