0

在我的某些系统上,我可以通过以下方式获取我的 IP 地址(192.68.mn 格式):

addr = IPSocket::getAddress(Socket.gethostname())

...问题在于,这仅在本地计算机为自己使用的名称是 DNS 服务器与其关联的名称时才有效。

*&#( ruby​​ 只返回其主接口的 IP 地址有多难?我必须以独立于平台的方式执行此操作,或者我只需调用 ifconfig 或 ipconfig 并解析它。

4

2 回答 2

4

看到这个问题。还see Socket.getaddrinfo()

于 2008-12-18T22:30:04.813 回答
0

这个怎么样

require 'socket'
ipaddr = UDPSocket.open {|s| s.connect('65.59.196.211'); s.addr.last }

IP 地址可以是任何真实的(这是我为 stackoverflow.com 获得的),但它应该是您想要获取 IP 地址的接口上可访问的 IP 地址。由于它是一个 UDP 套接字,实际上没有尝试连接,但它会尝试找出要使用的接口。

于 2010-04-23T21:44:45.997 回答