情况说明如下:
1.我目前有一个IP库上面提供一些IP如下:
  比如:某城市1 220.177.0.0/16 
       某城市2 202.101.210.0/23
       ....
       ....
注:/19表示从此后连续的32个C,/20表示从此后连续的16个C,/21表示从此后连续的8个C,/22表示从此后连续的4个C,/23表示从此后连续的2个C,/24表示1个C。几个C表示什么呀?2.而我现在首先可以得到客户端的IP,就不知道如何和提供某城市的IP对比出来得到属于哪个城市的IP.
请问有什么算法可以匹配IP...
有什么方法可以解决...

解决方案 »

  1.   

    IP分四段
    每段就是字节
    合成一个Long型就可以方便比较和匹配了~
      

  2.   

    回复: AprilSong(X)
    1.那有时候客户端检测出来的IP,客户提供的IP库中没有,客户说检测出来的IP是属于提供IP中某一段的,你看这是什么问题,难道和子网掩码有关吗?多谢回答
      

  3.   

    这个说不一定……
    要么就是IP库本身数据有问题
    要么就是程序解析IP出错
    或者客户端检测出来的IP只是内网IP关于IP库~
    其实一般客户提供的IP库
    还不如下一个QQ的IP库管用
    我现在用的就是QQIP数据库纯真版数据是按IP段存的比较好用
    具体格式用16进制编辑器打开数据文件看一下就明白了
    没有加密~
      

  4.   

    哦你说的是安装一下QQ,QQ的目录里有是吧
      

  5.   

    随便搜索一下……到处都有下啊~http://www.google.com/search?q=QQIP%CA%FD%BE%DD%BF%E2%B4%BF%D5%E6%B0%E6&hl=zh-CN&lr=lang_zh-CN&ie=gb2312
      

  6.   

    我下了一个QQWry.Dat的文件,用UltraEdit打开,16进制查看,显示都是乱码,是不是下错了
      

  7.   

    不会吧……
    就算是用文本编辑器打开都可以的
    中文的就是地址
    乱码的就是IP和格式符~这里是他的格式说明:
    http://lumaqq.linuxsir.org/download/article/qqwry_format_detail.html
      

  8.   

    对了,可以用SQL语句查询处理不
      

  9.   

    当然不支持…… - -b
    除非你写代码把它导进支持SQL的数据库……
      

  10.   

    哦,我知道了,我先分析以下结构吧,不错/如果是这样查找速度是蛮快的
    先谢了
    我想分析完后,写个工具转到ACESS数据库中去,方便大家也不用分析这些结构
      

  11.   

    IP Acess数据库全部转换完毕,需要纯真版IP库的和我联系,或留下Email,
    同时感谢AprilSong(X)的帮助
    结贴,散分