如何使用 Elixir/Nerves 获取当前设备 IP
How to get current device IP using Elixir/Nerves
我正在为 Nerves 项目编写 UPnP 适配器,因此需要能够使用设备 IP 地址响应某些请求。有没有一种简单的单行方式?
我的项目正在使用 VintageNet 和 nerves-pack
,可以通过 VintageNet 属性获取 IP。然而,VintageNet 在主机上的开发过程中不起作用,这对我来说很重要,因为它能够调试我的 UPnP 实现。而且,这让我的 UPnP 库在未来不受神经影响变得很尴尬。
感谢您的帮助。
不确定 Nerves,但您可以使用 :inet.getifaddrs/0
的输出来获取您需要的信息。
例如,如果您知道需要适配器 en1
的 IPv4 地址:
:inet.getifaddrs()
|> elem(1)
|> Map.new()
|> Map.get('en1')
|> Keyword.get_values(:addr)
|> Enum.find(&match?({_, _, _, _}, &1))
示例输出:
{192, 168, 0, 1}
我正在为 Nerves 项目编写 UPnP 适配器,因此需要能够使用设备 IP 地址响应某些请求。有没有一种简单的单行方式?
我的项目正在使用 VintageNet 和 nerves-pack
,可以通过 VintageNet 属性获取 IP。然而,VintageNet 在主机上的开发过程中不起作用,这对我来说很重要,因为它能够调试我的 UPnP 实现。而且,这让我的 UPnP 库在未来不受神经影响变得很尴尬。
感谢您的帮助。
不确定 Nerves,但您可以使用 :inet.getifaddrs/0
的输出来获取您需要的信息。
例如,如果您知道需要适配器 en1
的 IPv4 地址:
:inet.getifaddrs()
|> elem(1)
|> Map.new()
|> Map.get('en1')
|> Keyword.get_values(:addr)
|> Enum.find(&match?({_, _, _, _}, &1))
示例输出:
{192, 168, 0, 1}