在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,但是如何删除最后一个八位字节到dot(.)?
最佳答案
快速而肮脏的方式就像
"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"
引用: