ip和域名转换

获取本机的ip或者域名

 

require  'socket'

puts IPSocket.getaddress(Socket.gethostname)
puts Socket.gethostname
puts TCPSocket.gethostbyname(Socket.gethostname)

 

在rails中可以通过 request.remote_ip来获取访问者的ip,通过ip地址可以获取对应的域名

通过windows命令:nbtstat -a 192.168.65.96 可以查看到 192.168.65.96这台机器的域名

 

  def visitor_name(ip)
    arr = []
    nbt = `nbtstat -a "#{ip}"`
    nbt.scan(/\s\s.+<00>.+UNIQUE/) do |i|
      arr << i.split[0]
    end
    arr[0]
  end

  puts visitor_name("192.168.65.96")

 

完整的例子:访问首页的时候,获取访问者的域名,并存放在session中

 

class HomeController < ApplicationController

  def index
    session[:vistor_name] = visitor_name(visitor_ip)
  end

  def visitor_ip
    request.remote_ip.to_s
  end

  def visitor_name(ip)
    arr = []
    nbt = `nbtstat -a "#{ip}"`
    nbt.scan(/\s\s.+<00>.+UNIQUE/) do |i|
      arr << i.split[0]
    end
    arr[0]
  end
  
end
 

你可能感兴趣的:(IP,domain)