我正在 Ubuntu 12.04LTS 操作系统中进行 Rails 开发。
我想在一个文件中捕获我的本地 IP 地址,而不是我使用的环回 127.0.0.1 ifconfig
。请提出解决方案。
我正在 Ubuntu 12.04LTS 操作系统中进行 Rails 开发。
我想在一个文件中捕获我的本地 IP 地址,而不是我使用的环回 127.0.0.1 ifconfig
。请提出解决方案。
Socket.ip_address_list #=> Array of AddrInfo
这是我的第一种方式:
require 'socket'
def local_ip
orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily
UDPSocket.open do |s|
s.connect '64.233.187.99', 1
s.addr.last
end
ensure
Socket.do_not_reverse_lookup = orig
end
# irb:0> local_ip
# => "192.168.0.127"
这是我的第二种方式,不推荐:
require 'socket'
Socket::getaddrinfo(Socket.gethostname,”echo”,Socket::AF_INET)[0][3]
第三种方式:
UDPSocket.open {|s| s.connect('64.233.187.99', 1); s.addr.last }
第四种方式:
Use Socket#ip_address_list
Socket.ip_address_list #=> Array of AddrInfo
写下方法
def self.local_ip
orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
UDPSocket.open do |s|
s.connect '64.233.187.99', 1
s.addr.last
end
ensure
Socket.do_not_reverse_lookup = orig
end
然后调用 local_ip 方法,你会得到你机器的 ip 地址。
Eg: ip_address= local_ip