二郎:读取IP地址

Erlang: read ip address

我正在尝试使用 Erlang 获取我的 IP 地址。

我从这里找到了这个例子:

local_ip_v4() ->
    {ok, Addrs} = inet:getifaddrs(),
    hd([Addr || {_, Opts} <- Addrs, {addr, Addr} <- Opts, size(Addr) == 4, Addr =/= {127,0,0,1}]).

但它 return 的值是这样的:{127,0,0,1}

我希望它成为 return 这样的值:"{127,0,0,1}" 加双引号 ("") 因为我想用 re:replace 来改变 ,..

我该怎么做?

函数 returns 元组,因为这是 erlang 代码可以本地处理的东西。您可能想要做的是将此元组转换为字符串,然后应用字符串操作。可以找到有关如何执行此操作的详细信息,例如在 Convert erlang terms to string, or decode erlang binary

如果要将IP地址转换为字符串,可以使用函数inet:ntoa/1:

> inet:ntoa({127, 0, 0, 1}).
"127.0.0.1"

作为奖励,它还可以处理 IPv6 地址:

> inet:ntoa({0,0,0,0,0,0,0,1}).
"::1"