最近在找一个离线IP数据库,发现IPIP.NET上的数据比较符合需求,可惜没Erlang语言版本,因此写一个Erlang Lib。参考了其他语言库,实现了IP数据读取功能,由于直接操作Binary操作,所以效率不会很高,如果要应用到高频查询,最好加一层缓存。
代码是针对IPIP.NET (http://www.ipip.net/download.html)上的免费数据库,数据格式大致如下:
| 4 bytes 数据长度 DataLen(big endian) |
| 256 * 4 ip首位对应的数据偏移 |
| DataLen – 4 – 256*4 以8bytes的数据(4 bytes Ip, 3 bypes offSet, 1 byte data len) |
| Address data 地址信息 |
解释代码的基本思路是:先通过首位地址,找到IP段所在的数据范围,再在范围中找到目标IP的地址偏移。
Github https://github.com/kqqsysu/erlang-ip
Erlang技术分享内容均为原创,转载请标明本文地址
本文链接:http://www.kongqingquan.com/archives/515
不错,不错,看看了!