如何使用 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}