二郎:读取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"
我正在尝试使用 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"