搜索
楼主: 金闪闪

利用GeoIP和QQWry数据

[复制链接]
发表于 2004-7-13 16:38:04 | 显示全部楼层 来自 中国–云南–昆明
不懂啊~~太菜了我
回复

使用道具 举报

发表于 2004-7-13 16:46:59 | 显示全部楼层 来自 中国–广东–深圳
向导都搞不定??呵呵。。

给金老弟个程序,这是动网论坛翻译IP的来源的asp,有这么一段:

Function lookaddress(sip)
        Dim str1,str2,str3,str4
        Dim num
        Dim irs
        If isnumeric(left(sip,2)) Then
                If sip="127.0.0.1" Then sip="192.168.0.1"
                str1=left(sip,instr(sip,".")-1)
                sip=mid(sip,instr(sip,".")+1)
                str2=left(sip,instr(sip,".")-1)
                sip=mid(sip,instr(sip,".")+1)
                str3=left(sip,instr(sip,".")-1)
                str4=mid(sip,instr(sip,".")+1)
                If isNumeric(str1)=0 Or isNumeric(str2)=0 Or isNumeric(str3)=0 Or isNumeric(str4)=0 Then

                Else
                        num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
                        Dim adb,aConnStr,AConn
                        adb = "data/ipaddress.mdb"
                        aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(adb)
                        Set AConn = Server.CreateObject("ADODB.Connection")
                        aConn.Open aConnStr
                        sql="select country,city from dv_address where ip1 <="&num&" and ip2 >="&num
                        Set irs=AConn.Execute(sql)
                        If irs.eof And irs.bof Then
                                lookaddress=template.Strings(12)
                        Else
                                Do While Not irs.eof
                                        lookaddress=lookaddress & "<br>" &irs(0) & irs(1)
                                irs.movenext
                                Loop
                        End If
                        irs.close
                        Set irs=nothing
                        Set AConn=Nothing
                End If
        Else
                lookaddress=template.Strings(12)
        End If
End Function


不过其中用了SQL 语句,估计在amx里无法调用。。但希望对你有帮助。
adb = "data/ipaddress.mdb"这个是动网的IP库,和QQIP库应该是一样的。
到处都可以找到,也可以随时更新。
回复

使用道具 举报

 楼主| 发表于 2004-7-13 19:40:17 | 显示全部楼层 来自 中国–福建–龙岩
代码是看了。也到AMX和AMXX找了GeoIP的DLL。

发现AMX GeoIP_02是省略版本,它没有GeoIP_city_xxxx功能。
而AMXX的比较全面。

我看要先搞出GeoIP.DAT格式才好。  :21:
回复

使用道具 举报

发表于 2004-7-13 20:42:20 | 显示全部楼层 来自 中国–广东–深圳–福田区
进展好快啊。
帮不到你们,惭愧啊!
加油啊! :63:
回复

使用道具 举报

 楼主| 发表于 2004-7-13 21:33:49 | 显示全部楼层 来自 中国–福建–龙岩
对geoip.dll用IDAPro+源代码,知道AMX的geoip.dll真是“剪版”,功能太少了。
它的geoip.sma里面的功能就是:
geoip_code2
geoip_code3
geoip_country

由IP得到countryid,而国家名居然在dll文件中。
看看,能否挂接geoip_city的API。  :10:
回复

使用道具 举报

发表于 2004-7-13 23:47:06 | 显示全部楼层 来自 中国–广东–深圳
还不如从mdb文件中读呢。。
回复

使用道具 举报

发表于 2004-7-14 01:31:21 | 显示全部楼层 来自 中国–湖北–襄阳
原来想过最好是写一个支持mysql的amx插件,把qqip数据导入到mysql然后就很方便了,而且效率很高
回复

使用道具 举报

发表于 2004-7-14 11:15:54 | 显示全部楼层 来自 中国–广东–湛江
这样的帖子不顶我还算是个人吗?金兄努力了
回复

使用道具 举报

 楼主| 发表于 2004-7-14 13:01:47 | 显示全部楼层 来自 中国–福建–龙岩
看来AMX下搞GeoIP真要重新编译这个modules了。

既然要自己编写。我就先给大家一个AMX论坛里面的代码。
:wink:

这段代码使用AMX的fopen和fread来操作,效率低下。
而编译成modules方式,效率很高,因为modules方式是直接WIN32API调用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2004-7-14 17:51:16 | 显示全部楼层 来自 中国–广东–深圳
那不如用这个?已经是dll文件了。

我的想法不如我们自己生成一个TXT用“,"分开的文件,只有两列,IP和来源,

然后就是查询和显示了,很容易。。呵呵。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表