Erlang:读取ip地址

时间:2016-03-15 12:20:08

标签: erlang erl

我试图使用Erlang获取我的IP地址。

我从这里找到了这个例子:Erlang: Finding my IP Address

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

但它会返回如下值:{127,0,0,1}

我希望它返回这样的值:"{127,0,0,1}"带双引号(""),因为我想使用re:replace,更改为. }。

我该怎么做?

2 个答案:

答案 0 :(得分:9)

如果要将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"

答案 1 :(得分:4)

该函数返回元组,因为这是erlang代码可以本机处理的东西。您可能想要做的是将此元组转换为字符串,然后应用字符串操作。可以找到关于如何做到这一点的细节,例如在Convert erlang terms to string, or decode erlang binary

相关问题