删除Ruby中的最后一个IP地址八位字节

时间:2011-08-22 03:27:18

标签: ruby string sockets network-programming

在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,但是如何删除最后一个八位字节到点(。)?

1 个答案:

答案 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"

参考文献: