【erlang】IPv6格式转IPv4

简介:

erlang里面的httpd模块保存的http请求头里面,其中remote_addr 保存的是IPv6的格式。

即使是IPv4,也会用IPv6的格式来保存。如

{remote_addr, "0:0:0:0:0:FFFF:C0A8:4E01"}

 

其实表示的就是IPv4为127.0.0.1的IPv6格式。

虽然IPv6是趋势,但没使用,这样用起来很不方便。特别是我这边要实现一个IP白名单的功能。

所以写了一个比较简单的转换方法。

复制代码
-module(test).
-export([ipv6_2_ipv4/1]).


%% V6 = "0:0:0:0:0:FFFF:C0A8:4E01".
ipv6_2_ipv4(V6)->
    L1 = string:tokens(V6,":"),
    V4_7 = format(lists:nth(7, L1)),
    V4_8 = format(lists:nth(8, L1)),
    Ip1 = list_to_integer(string:substr(V4_7, 1, 2), 16),
    Ip2 = list_to_integer(string:substr(V4_7, 3, 2), 16),
    Ip3 = list_to_integer(string:substr(V4_8, 1, 2), 16),
    Ip4 = list_to_integer(string:substr(V4_8, 3, 2), 16),
    {Ip1, Ip2, Ip3, Ip4}.


%% =================
%% internal function
%% =================
format(Term) when length(Term) =:= 1 ->
    "000"++Term;
format(Term) when length(Term) =:= 2 ->
    "00"++Term;
format(Term) when length(Term) =:= 3 ->
    "0"++Term;
format(Term) when length(Term) =:= 4 ->
    Term.

 


相关文章
|
12月前
|
网络协议 Go
golang判断ip地址是ipv4还是ipv6
golang判断ip地址是ipv4还是ipv6
|
2月前
|
网络协议 网络安全 数据安全/隐私保护
IPv4和IPv6有什么区别
IPv4和IPv6有什么区别
|
10月前
|
网络协议 Linux
如何在 Linux 中配置 IPv4 和 IPv6 地址?
如何在 Linux 中配置 IPv4 和 IPv6 地址?
270 0
|
网络协议 数据挖掘 网络性能优化
ipv6地址概述——了解ipv6与ipv4不同
一 ipv4与ipv6 1.ipv4的概述 目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。 IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上。 近十年来由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,各项资料显示全球IPv4位址可能在2005至2008年间全部发完。
198 0
ipv6地址概述——了解ipv6与ipv4不同
|
网络协议 网络性能优化 网络架构
【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )
【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )
279 0
【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )
|
网络协议 Unix Linux
UNP总结 Chapter 12~14 IPv4与IPv6的互操作性、守护进程和inet超级服务器、高级I/O函数
一、IPv4与IPv6的互操作性 1.IPv4客户与IPv6服务器 拥有双重协议栈的主机的一个基本特性就是:其上运行的IPv6服务器既能应付IPv4客户,又能应付IPv6客户。这是通过使用IPv4映射的IPv6地址实现的。
901 0
|
网络协议 网络架构
|
机器学习/深度学习 网络协议 Perl