lxyzmxcssa 发表于 2004-7-13 16:38:04

不懂啊~~太菜了我

kindzhon 发表于 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:

lzj 发表于 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:

kindzhon 发表于 2004-7-13 23:47:06

还不如从mdb文件中读呢。。

x86 发表于 2004-7-14 01:31:21

原来想过最好是写一个支持mysql的amx插件,把qqip数据导入到mysql然后就很方便了,而且效率很高

zjbopp 发表于 2004-7-14 11:15:54

这样的帖子不顶我还算是个人吗?金兄努力了

金闪闪 发表于 2004-7-14 13:01:47

看来AMX下搞GeoIP真要重新编译这个modules了。

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

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

kindzhon 发表于 2004-7-14 17:51:16

那不如用这个?已经是dll文件了。

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

然后就是查询和显示了,很容易。。呵呵。
页: 1 [2] 3 4 5 6 7
查看完整版本: 利用GeoIP和QQWry数据