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和来源,
然后就是查询和显示了,很容易。。呵呵。