【问题标题】:Platform independent method of getting IP address of primary network interface获取主网络接口 IP 地址的平台无关方法
【发布时间】:2018-04-15 20:49:01
【问题描述】:

我想知道是否有办法在 Ruby 中获取主网络接口(在我的情况下为 wlan0)的 IP 地址,无论平台如何。

在 Python3 中,我有以下功能:

def getIPAddress():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("8.8.8.8", 80))
    return s.getsockname()[0]

我可以打电话给:

print("My IP address: " + getIPAddress())

适用于 Windows、Linux 和 Mac。

我确信在 Ruby 中有一种方法可以做到这一点,但我还没有找到任何东西。

所以我想知道你是否知道这样做的任何方法?

谢谢!

【问题讨论】:

  • 什么是“主网络接口”?如果您可以解释“主网络接口”是什么,那么您可能还可以编写一个程序来查找其 IP 地址。请注意,在大多数现代操作系统中,任何网络接口都有大约六个地址,并且可能有更多。 (在我的工作笔记本电脑上,千兆以太网接口有大约 15 个地址,我会根据我正在处理的项目不断添加和删除一些地址。)

标签: ruby ip


【解决方案1】:

查看 Ruby 的 Socket 类的文档,您的 Python 代码几乎可以 1:1 转换为 Ruby:

require "socket"

def get_ip_address
  s = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM)
  s.connect(Socket.pack_sockaddr_in(80, "8.8.8.8"))
  Socket.unpack_sockaddr_in(s.getsockname)[1]
end

puts "My IP address: #{get_ip_address}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2015-04-04
    • 2010-12-26
    • 2020-01-14
    相关资源
    最近更新 更多