zoukankan      html  css  js  c++  java
  • 【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.
  • 相关阅读:
    制作自己的漫画书
    VOIP-- 打电话
    python批量给图片添加logo
    python图片拼接
    一种下载电影很快的方法 you-get
    运动健身
    深圳朋友来玩
    多关键字排序实验
    最小生成树实验
    MySQL命令大全(值得一看)
  • 原文地址:https://www.cnblogs.com/rond/p/4240341.html
Copyright © 2011-2022 走看看