我上面的计算实际上是使用客户的IP地址来获得客户的位置,原理就是“追捕”程序!
代码如下:
首先是做一个Fonciton函数
-----------------------------------------------------Function UserSource(sip As string) As String
'定义基本连接对象
Dim strConn As string=("Provider= Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("address.mdb"))
Dim objConn As New OleDbConnection(strConn)
Dim strCommand As String
Dim objAdapter As New OleDbDataAdapter (strCommand,objConn)
Dim objDataSet As New DataSet()
'开始判断
If sip="127.0.0.1" Then
sip="192.168.0.1"
End IF
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim str4 As String
Dim strCountry As String
Dim strCity As String
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)=True OR isNumeric(str2)=True OR isNumeric(str3)=True OR isNumeric(str4)=True Then Dim lngNum As Long
lngNum=((cint(str1))*256*256*256)+((cint(str2))*256*256)+((cint(str3))*256)+((cint(str4)))-1
设定查找数据库语句
strCommand="SELECT Top 1 country,city from address where ip1 <=" & lngNum & "AND ip2>= "& lngNum &""
Try
objConn.Open()
objAdapter.Fill(objDataSet,"address")
Catch objError As Exception
UserSource="您的IP地址数据找不到或者出现错误!"
OutErr.Text=objError.Message & objError.Source
End Try
strCountry=objDataSet.Tables("address").Rows(0).Item("country")
strCity=objDataSet.Tables("address").Rows(0).Item("city")
UserSource=lngNum1 & "**" & lngNum2 & "**" & lngNum3 & "**" & lngNum4
Else
UserSource="您的地址数据未知!"
End IF
objConn.Close()
objConn=Nothing
objAdapter=Nothing
objDataSet=Nothing
End Function
-------------------------------------------------
程序的代码到了这个地方: 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)已经成功的把192.168.0.1这样的IP地址转化成为
str1=192 str2=168 str3= 0 str4= 1但是运行下面的算术表达式:
lngNum=((cint(str1))*256*256*256)+((cint(str2))*256*256)+((cint(str3))*256)+((cint(str4)))-1
就出现“System.OverflowException: 算术运算导致溢出。”错误!
代码如下:
首先是做一个Fonciton函数
-----------------------------------------------------Function UserSource(sip As string) As String
'定义基本连接对象
Dim strConn As string=("Provider= Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("address.mdb"))
Dim objConn As New OleDbConnection(strConn)
Dim strCommand As String
Dim objAdapter As New OleDbDataAdapter (strCommand,objConn)
Dim objDataSet As New DataSet()
'开始判断
If sip="127.0.0.1" Then
sip="192.168.0.1"
End IF
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim str4 As String
Dim strCountry As String
Dim strCity As String
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)=True OR isNumeric(str2)=True OR isNumeric(str3)=True OR isNumeric(str4)=True Then Dim lngNum As Long
lngNum=((cint(str1))*256*256*256)+((cint(str2))*256*256)+((cint(str3))*256)+((cint(str4)))-1
设定查找数据库语句
strCommand="SELECT Top 1 country,city from address where ip1 <=" & lngNum & "AND ip2>= "& lngNum &""
Try
objConn.Open()
objAdapter.Fill(objDataSet,"address")
Catch objError As Exception
UserSource="您的IP地址数据找不到或者出现错误!"
OutErr.Text=objError.Message & objError.Source
End Try
strCountry=objDataSet.Tables("address").Rows(0).Item("country")
strCity=objDataSet.Tables("address").Rows(0).Item("city")
UserSource=lngNum1 & "**" & lngNum2 & "**" & lngNum3 & "**" & lngNum4
Else
UserSource="您的地址数据未知!"
End IF
objConn.Close()
objConn=Nothing
objAdapter=Nothing
objDataSet=Nothing
End Function
-------------------------------------------------
程序的代码到了这个地方: 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)已经成功的把192.168.0.1这样的IP地址转化成为
str1=192 str2=168 str3= 0 str4= 1但是运行下面的算术表达式:
lngNum=((cint(str1))*256*256*256)+((cint(str2))*256*256)+((cint(str3))*256)+((cint(str4)))-1
就出现“System.OverflowException: 算术运算导致溢出。”错误!
你再把它转换成长整形看看,
UserSource=lngNum1 & "**" & lngNum2 & "**" & lngNum3 & "**" & lngNum4是我写的调试语句,我的VS.net的调试功能我不会用:-(
我只好用语句显示变量的内容,我刚才忘记删除了,大家不要看这个语句!~
lngNum1=(CLng(str1))*256*256*256
tacchan(tacchan)
mygodness(狂风) 两位~!!