qqwry.dat 压缩 IP精简库, 文件格式与程序源码

//文件格式:


typedef struct
{
    unsigned char B0:2; // 00 表示SegSize长度是 1Byte, 01 = 2Byte, 10 = 3Byte, 11 = 4Byte
    unsigned char B1:2;
    unsigned char B2:2;
    unsigned char B3:2;
}B8_2;


//4个IP段信息, Flag里保存4个段的数据长度, iSheng 表示省索引, iShi 表示市索引
Record(4)
{
    B8_2 Flag={B0,B1,B2,B3};

    Record(0)
    {
       SegSize(Flag.B0 Byte), iSheng(1 Byte), iShi(1 Byte)
    },


    Record(1)
    {
       SegSize(Flag.B1 Byte), iSheng(1 Byte), iShi(1 Byte)
    },


    Record(2)
    {
       SegSize(Flag.B2 Byte), iSheng(1 Byte), iShi(1 Byte)
    },


    Record(3)
    {
       SegSize(Flag.B3 Byte), iSheng(1 Byte), iShi(1 Byte)
    },
}


//整个IP表结构
IP_Tables
{
    Record(4),Record(4),Record(4),Record(4),Record(4),Record(4),......
}


//记录: 地址段长度+省索引+市索引


//使用此方式压缩的IP库,可将9M的压缩到194KB


//读取代码:


FILE *f=fopen("iptbl.dat","rb");
if (f)
{
    unsigned long begin=0;
    unsigned long end;
    unsigned char iSheng;
    unsigned char iShi;
    unsigned long unknow=0;


LOOP1:
    B8_2 flag={0};
    if (fread(&flag,1,1,f))
    {
        unsigned long size[4]={0};


        fread(&size[0],1,flag.B0+1,f);
        fread(&iSheng,1,1,f);
        fread(&iShi,1,1,f);


        end=begin+size[0]-1;
        printf("%015u %015u %03d.%03d.%03d.%03d %03d.%03d.%03d.%03d %02d %02d %s %s\n", begin, end, IP_F1(begin),IP_F2


(begin),IP_F3(begin),IP_F4(begin), IP_F1(end),IP_F2(end),IP_F3(end),IP_F4(end), iSheng, iShi, ss[iSheng].sheng, ss[iSheng].shi


[iShi]);
        begin=end+1;


        fread(&size[1],1,flag.B1+1,f);
        fread(&iSheng,1,1,f);
        fread(&iShi,1,1,f);




        end=begin+size[1]-1;
        printf("%015u %015u %03d.%03d.%03d.%03d %03d.%03d.%03d.%03d %02d %02d %s %s\n", begin, end, IP_F1(begin),IP_F2


(begin),IP_F3(begin),IP_F4(begin), IP_F1(end),IP_F2(end),IP_F3(end),IP_F4(end), iSheng, iShi, ss[iSheng].sheng, ss[iSheng].shi


[iShi]);
        begin=end+1;


        fread(&size[2],1,flag.B2+1,f);
        fread(&iSheng,1,1,f);
        fread(&iShi,1,1,f);




        end=begin+size[2]-1;
        printf("%015u %015u %03d.%03d.%03d.%03d %03d.%03d.%03d.%03d %02d %02d %s %s\n", begin, end, IP_F1(begin),IP_F2


(begin),IP_F3(begin),IP_F4(begin), IP_F1(end),IP_F2(end),IP_F3(end),IP_F4(end), iSheng, iShi, ss[iSheng].sheng, ss[iSheng].shi


[iShi]);
        begin=end+1;


        fread(&size[3],1,flag.B3+1,f);
        fread(&iSheng,1,1,f);
        fread(&iShi,1,1,f);


        end=begin+size[3]-1;
        printf("%015u %015u %03d.%03d.%03d.%03d %03d.%03d.%03d.%03d %02d %02d %s %s\n", begin, end, IP_F1(begin),IP_F2


(begin),IP_F3(begin),IP_F4(begin), IP_F1(end),IP_F2(end),IP_F3(end),IP_F4(end), iSheng, iShi, ss[iSheng].sheng, ss[iSheng].shi


[iShi]);
        begin=end+1;


        goto LOOP1;
    }


    fclose(f);
}


//省市文本索引,来自QQ2013


#ifndef _H_CITY_STATIC_DEF
#define _H_CITY_STATIC_DEF


typedef struct _sheng_shi
{
    char sheng[8];
    char shi[256][14];
}sheng_shi;


static sheng_shi ss[]={
    {"未知",   {"未知",""}},
    {"北京",   {"未知","东城","西城","朝阳","丰台","石景山","海淀","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密


云","延庆",""}},
    {"天津",   {"未知","和平","河东","河西","南开","河北","红桥","东丽","西青","津南","北辰","宁河","武清","静海","宝坻","蓟


县","滨海新区",/*+*/"虹桥","塘沽",""}},
    {"河北",   {"未知","石家庄","唐山","秦皇岛","邯郸","邢台","保定","张家口","承德","沧州","廊坊","衡水",""}},
    {"山西",   {"未知","太原","大同","阳泉","长治","晋城","朔州","晋中","运城","忻州","临汾","吕梁",""}},
    {"内蒙古", {"未知","呼和浩特","包头","乌海","赤峰","通辽","鄂尔多斯","呼伦贝尔","巴彦淖尔","乌兰察布","兴安","锡林郭勒","阿


拉善",""}},
    {"辽宁",   {"未知","沈阳","大连","鞍山","抚顺","本溪","丹东","锦州","营口","阜新","辽阳","盘锦","铁岭","朝阳","葫芦岛",""}},
    {"吉林",   {"未知","长春","吉林","四平","辽源","通化","白山","松原","白城","延边",""}},
    {"黑龙江", {"未知","哈尔滨","齐齐哈尔","鸡西","鹤岗","双鸭山","大庆","伊春","佳木斯","七台河","牡丹江","黑河","绥化","大兴安


岭",""}},
    {"上海",   {"未知","黄浦","卢湾","徐汇","长宁","静安","普陀","闸北","虹口","杨浦","闵行","宝山","嘉定","浦东新","金山","松江


","奉贤","青浦","崇明",/*+*/"虹桥","南汇",""}},
    {"江苏",   {"未知","南京","无锡","徐州","常州","苏州","南通","连云港","淮安","盐城","扬州","镇江","泰州","宿迁",""}},
    {"浙江",   {"未知","杭州","宁波","温州","嘉兴","湖州","绍兴","金华","衢州","舟山","台州","丽水",""}},
    {"安徽",   {"未知","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州


","宣城",""}},
    {"福建",   {"未知","福州","厦门","莆田","三明","泉州","漳州","南平","龙岩","宁德",""}},
    {"江西",   {"未知","南昌","景德镇","萍乡","九江","新余","鹰潭","赣州","吉安","宜春","抚州","上饶",""}},
    {"山东",   {"未知","济南","青岛","淄博","枣庄","东营","烟台","潍坊","济宁","泰安","威海","日照","莱芜","临沂","德州","聊


城","滨州","菏泽",""}},
    {"河南",   {"未知","郑州","开封","洛阳","平顶山","安阳","鹤壁","新乡","焦作","濮阳","许昌","漯河","三门峡","南阳","商丘","信


阳","周口","驻马店","济源",""}},
    {"湖北",   {"未知","武汉","黄石","十堰","宜昌","襄阳","鄂州","荆门","孝感","荆州","黄冈","咸宁","随州","恩施","仙桃","潜


江","天门",""}},
    {"湖南",   {"未知","神农架","长沙","株洲","湘潭","衡阳","邵阳","岳阳","常德","张家界","益阳","郴州","永州","怀化","娄底","湘


西",""}},
    {"广东",   {"未知","广州","韶关","深圳","珠海","汕头","佛山","江门","湛江","茂名","肇庆","惠州","梅州","汕尾","河源","阳


江","清远","东莞","中山","潮州","揭阳","云浮",""}},
    {"广西",   {"未知","南宁","柳州","桂林","梧州","北海","防城港","钦州","贵港","玉林","百色","贺州","河池","来宾","崇左",""}},
    {"海南",   {"未知","海口","三亚","三沙","五指山","琼海","儋州","文昌","万宁","东方","定安","屯昌","澄迈","临高","白沙","昌江


","乐东","陵水","保亭","琼中",""}},
    {"重庆",   {"未知","万州","涪陵","渝中","大渡口","江北","沙坪坝","九龙坡","南岸","北碚","万盛","双桥","渝北","巴南","长寿","


綦江","潼南","铜梁","大足","荣昌","璧山","梁平","城口","丰都","垫江","武隆","忠县","开县","云阳","奉节","巫山","巫溪","黔江","石


柱","秀山","酉阳","彭水","江津","合川","永川","南川","两江新区",""}},
    {"四川",   {"未知","成都","自贡","攀枝花","泸州","德阳","绵阳","广元","遂宁","内江","乐山","南充","眉山","宜宾","广安","达州


","雅安","巴中","资阳","阿坝","甘孜","凉山",""}},
    {"贵州",   {"未知","贵阳","六盘水","遵义","安顺","铜仁","黔西南","毕节","黔东南","黔南",""}},
    {"云南",   {"未知","昆明","曲靖","玉溪","保山","昭通","丽江","普洱","临沧","楚雄","红河","文山","西双版纳","大理","德宏","怒


江","迪庆",""}},
    {"西藏",   {"未知","拉萨","昌都","山南","日喀则","那曲","阿里","林芝",""}},
    {"陕西",   {"未知","西安","铜川","宝鸡","咸阳","渭南","延安","汉中","榆林","安康","商洛",""}},
    {"甘肃",   {"未知","兰州市","嘉峪关","金昌","白银","天水","武威","张掖","平凉","酒泉","庆阳","定西","陇南","临夏","甘


南",""}},
    {"青海",   {"未知","西宁","海东","海北","黄南","海南","果洛","玉树","海西",""}},
    {"宁夏",   {"未知","银川","石嘴山","吴忠","固原","中卫",""}},
    {"新疆",   {"未知","乌鲁木齐","克拉玛依","吐鲁番","哈密","昌吉","博尔塔拉","巴音郭楞","阿克苏","克孜勒苏","喀什","和田","伊


犁","塔城","阿勒泰","石河子","阿拉尔","图木舒克","五家渠","北屯",""}},
    {"台湾",   {"未知","台北市","高雄市","基隆市","台中市","台南市","新竹市","嘉义市","台北县","宜兰县","桃园县","新竹县","苗栗


县","台中县","彰化县","南投县","云林县","嘉义县","台南县","高雄县","屏东县","澎湖县","台东县","花莲县",""}},
    {"香港",   {"未知","中西区","东区","九龙城区","观塘区","南区","深水埗区","黄大仙区","湾仔区","油尖旺区","离岛区","葵青区","


北区","西贡区","沙田区","屯门区","大埔区","荃湾区","元朗区",""}},
    {"澳门",   {"未知","花地玛堂区","圣安多尼堂区","大堂区","望德堂区","风顺堂区","氹仔","路环",""}},
};


#endif


/*
iptab.dat
数据源来自: 纯真IP数据库
记录总数  :444144条
更新日期  :2013年5月25日
*/
源码资源下载地址: http://download.csdn.net/detail/tdgx2004/5491739
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值