13

私はUbuntu12.04LTSOSでRails開発を行っています。

を使用して取得したループバック127.0.0.1ではなく、ローカルIPアドレスをファイルにキャプチャしたいと思いますifconfig。解決策を提案してください。

4

3 に答える 3

25

Socket::ip_address_listを使用します。

Socket.ip_address_list #=> Array of AddrInfo
于 2012-12-24T09:13:27.733 に答える
3

これが私の最初の方法です。

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"

これは私の2番目の方法であり、お勧めしません。

require 'socket'
 Socket::getaddrinfo(Socket.gethostname,”echo”,Socket::AF_INET)[0][3]

3番目の方法:

 UDPSocket.open {|s| s.connect('64.233.187.99', 1); s.addr.last }

そして4番目の方法:

Use Socket#ip_address_list

Socket.ip_address_list #=> Array of AddrInfo
于 2012-12-24T09:31:12.060 に答える
2

以下の方法で書く

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
于 2012-12-24T10:29:43.733 に答える