Удаление последнего октета IP-адреса в Ruby - PullRequest
4 голосов
/ 22 августа 2011

В Ruby я хочу взять свой локальный IP-адрес и преобразовать его в сетевой идентификатор (например, с 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 Ответ

5 голосов
/ 22 августа 2011

быстрый и грязный способ будет выглядеть примерно так:

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

ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...