高尔夫基础与实用技巧巧:如何通过IP地址进行精准定位高尔夫基础与实用技巧

第1页与好友在网络上相互传输资料时,有时先要知道对方计算机的IP地址,才能与对方建立信息传输通道。 那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不值得一提;可是,要让你列举出多种IP地址搜查方法时,你可能就感到勉为其难了。下面,本文就对如何快速、准确地搜查出对方好友的计算机IP地址,提出如下几种方法,相信能对大家有所帮助! 1、邮件查询法 使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你可以通过查看该邮件属性的方法,来获得邮件发送者所在计算机的IP地址;下面就是该方法的具体实施步骤: 首先运行OutLook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱页面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令; 在其后打开的属性设置窗口中,单击“详细资料”标签,并在打开的标签页面中,你将看到“Received: from xiecaiwen (unknown [11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方好友的IP地址;当然,要是对方好友通过Internet中的WEB信箱给你发送电子邮件的话,那么你在这里看到的IP地址其实并不是他所在工作站的真实IP地址,而是WEB信箱所在网站的IP地址。 当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中“原始信息”命令,就能在其后的界面中看到对方好友的IP地址了。 2、日志查询法 这种方法是通过防火墙来对QQ聊天记录进行实时监控,然后打开防火墙的日志记录,找到对方好友的IP地址。为方便叙述,本文就以KV2004防火墙为例,来向大家介绍一下如何搜查对方好友的IP地址: 考虑到与好友进行QQ聊天是通过UDP协议进行的,因此你首先要设置好KV防火墙,让其自动监控UDP端口,一旦发现有数据从UDP端口进入的话,就将它自动记录下来。在设置KV2004防火墙时,先单击防火墙界面中的“规则设置”按钮,然后单击“新建规则”按钮,弹出设置窗口;
在该窗口的“名称”文本框中输入“搜查IP地址”,在“说明”文本框中也输入“搜查IP地址”;再在“网络条件”设置项处,选中“接受数据包”复选框,同时将“对方IP地址”设置为“任何地址”,而在“本地IP地址”设置项处不需要进行任何设置; 下面再单击“UDP”标签,并在该标签页面下的“本地端口”设置项处,选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”;同样地,在“对方端口”设置项处,也选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”。 接着在“当所有条件满足时”设置项处,选中“通行”选项,同时将“其他处理”处的“记录”选项选中,而“规则对象”设置项不需要进行任何设置;完成了上面的所有设置后,单击“确定”按钮,返回到防火墙的主界面;再在主界面中选中刚刚创建好的“搜查IP地址”规则,同时单击“保存”按钮,将前面的设置保存下来。 完成好上面的设置后,KV防火墙将自动对QQ聊天记录进行全程监控,一旦对方好友给你发来QQ信息时,那么对方好友的IP地址信息就会自动出现在防火墙的日志文件中,此时你可以进入到KV防火墙的安装目录中,找到并打开“kvfwlog”文件,就能搜查到对方好友的IP地址。
提示:试试键盘 “← →” 可以实现快速翻页&
宽带山热帖排行ASP.NET获取真正的客户端IP地址的6种方法_实用技巧
作者:用户
本文讲的是ASP.NET获取真正的客户端IP地址的6种方法_实用技巧,
在ASP中使用 Request.ServerVariables(&REMOTE_ADDR&) 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址。 要想透过代理服务器取
在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址。 要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。 不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。 还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理: ...... userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") ......
服务端: //方法一 HttpContext.Current.Request.UserHostA //方法二 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; //方法三 string strHostName = System.Net.Dns.GetHostName(); string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); //方法四(无视代理) HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 客户端: //方法五 var ip = '&!--#echo var="REMOTE_ADDR"--&'; alert("Your IP address is "+ip); //方法六(无视代理)
复制代码 代码如下:
function GetLocalIPAddress() { var obj = var rslt = ""; try { obj = new ActiveXObject("rcbdyctl.Setting"); rslt = obj.GetIPA obj = } catch(e) { // }
22日添加: 来自印度的MCT Maulik Patel提供了一种服务端的解决方案,很好:
复制代码 代码如下:
if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy { ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP. } else// not using proxy or can't get the Client IP { ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP. }
备注: 1. 有些代理是不会发给我们真实IP地址的 2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IPServerVariables变量说明 serverVariables参数 response.write(request.serverVariables("varName")) 'varName就是需测的数据 ALL_HTTP 客户端发送的所有HTTP标头,他的结果都有前缀HTTP_。 ALL_RAW 客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_ APPL_MD_PATH 应用程序的元数据库路径。 APPL_PHYSICAL_PATH 与应用程序元数据库路径相应的物理路径。 AUTH_PASSWORD 当使用基本验证模式时,客户在密码对话框中输入的密码。 AUTH_TYPE 这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。 AUTH_USER 代验证的用户名。 CERT_COOKIE 唯一的客户证书ID号。 CERT_FLAG 客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。 CERT_ISSUER 用户证书中的发行者字段。 CERT_KEYSIZE 安全套接字层连接关键字的位数,如128。 CERT_SECRETKEYSIZE 服务器验证私人关键字的位数。如1024。 CERT_SERIALNUMBER 客户证书的序列号字段。 CERT_SERVER_ISSUER 服务器证书的发行者字段 CERT_SERVER_SUBJECT 服务器证书的字段。 CERT_SUBJECT 客户端证书的主题字段。 CONTENT_LENGTH 客户端发出内容的长度。 CONTENT_TYPE 客户发送的form内容或HTTP PUT的数据类型。 GATEWAY_INTERFACE 服务器使用的网关界面。 HTTPS 如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OFF。 HTTPS_KEYSIZE 安全套接字层连接关键字的位数,如128。 HTTPS_SECRETKEYSIZE 服务器验证私人关键字的位数。如1024。 HTTPS_SERVER_ISSUER 服务器证书的发行者字段。 HTTPS_SERVER_SUBJECT 服务器证书的主题字段。 INSTANCE_ID IIS实例的ID号。 INSTANCE_META_PATH 响应请求的IIS实例的元数据库路径。 LOCAL_ADDR 返回接受请求的服务器地址。 LOGON_USER 用户登录Windows NT的帐号 PATH_INFO 客户端提供的路径信息。 PATH_TRANSLATED 通过由虚拟至物理的映射后得到的路径。 QUERY_STRING 查询字符串内容。 REMOTE_ADDR 发出请求的远程主机的IP地址。 REMOTE_HOST 发出请求的远程主机名称。 REQUEST_METHOD 提出请求的方法。比如GET、HEAD、POST等等。 SCRIPT_NAME 执行脚本的名称。 SERVER_NAME 服务器的主机名、DNS地址或IP地址。 SERVER_PORT 接受请求的服务器端口号。 SERVER_PORT_SECURE 如果接受请求的服务器端口为安全端口时,则为1,否则为0。 SERVER_PROTOCOL 服务器使用的协议的名称和版本。 SERVER_SOFTWARE 应答请求并运行网关的服务器软件的名称和版本。 URL 提供URL的基本部分
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索客户端
,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!实用技巧:如何通过IP地址进行精准定位
我的图书馆
实用技巧:如何通过IP地址进行精准定位
在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:当我们想具体到街道甚至门牌号,该怎么办???偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。该接口的说明地址为:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:申请过程就不进行说明了。API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看。因为我想返回基础定位结果+地址信息+POI信息,所以我将请求参数extensions的值设置为3。一次完整的http请求为:http://api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的 密钥(AK)”&coord=bd09ll&extensions=3 。请求结果如下图:结果为json格式数据:{"content":{"location":{"lat":23.06588,"lng":115.404586},"locid":"925a2a9e3ac5be1cf003afd23c344ab3","radius":30,"confidence":0.5,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"新平路","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县新平路","business":"公平"},"result":{"error":161,"loc_time":" 21:53:28"}}我们需要的字段为:content字段里面的formatted_address。当然我们也可以将location里面的经度和纬度提取出来从而显示在地图上面。有的IP地址会返回pois数据,比如:183.55.116.95。返回参数如下:{"content":{"location":{"lat":23.082367,"lng":115.466276},"locid":"3fbfff42ccd5","radius":30,"confidence":1.0,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"S335","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县S335","pois":[{"name":"双墩村","address":"汕尾市海丰县三三五省道","tag":"行政地标;村庄","location":{"lat":23.082422,"lng":115.465348},"uid":""},{"name":"双墩村委会","address":"汕尾市海丰县","tag":"政府机构;各级政府","location":{"lat":23.083394,"lng":115.465914},"uid":""},{"name":"长联塘尾","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.081358,"lng":115.467315},"uid":""},{"name":"双墩小学","address":"335省道附近","tag":"教育培训;小学","location":{"lat":23.083336,"lng":115.465061},"uid":""},{"name":"大溪头","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.090326,"lng":115.465995},"uid":""}],"location_description":"双墩村东104米"},"result":{"error":161,"loc_time":" 22:03:31"}}此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。通过上面的分析,用python简单的写了一个脚本,具体代码如下:# -*- coding:utf-8 -*-# author:allen权import sysimport urllib2import jsondef get_ip_information(ip):url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密钥(AK)'&coord=bd09ll&extensions=3'poiss=''request = urllib2.Request(url)page = urllib2.urlopen(request, timeout=10)data_json = page.read()data_dic = json.loads(data_json)if(data_dic.has_key("content")):content=data_dic["content"]address_component=content["address_component"]formatted_address=content["formatted_address"]print "该IP地址的具体位置为:"print address_component["country"]print formatted_addressif (content.has_key("pois")):print "该IP地址附近POI信息如下:"pois = content["pois"]for index in range(len(pois)):pois_name = pois[index]["name"]pois_address = pois[index]["address"]print pois_name, pois_addresselse:print 'IP地址定位失败!!!'if __name__ == '__main__':get_ip_information('183.55.116.95')大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:再放一张自己IP的测试截图:确实精确到了路名,很准确,虽然没有pois的信息。最后声明一下,成功率:综合定位成功率 65% ,精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据,所说有一定的概率是查询失败的!!!!
喜欢该文的人也喜欢在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:
当我们想具体到街道甚至门牌号,该怎么办???
偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。该接口的说明地址为:
若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:
申请过程就不进行说明了。API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看。因为我想返回基础定位结果+地址信息+POI信息,所以我将请求参数extensions的值设置为3。一次完整的http请求为:“你的 密钥(AK)”&coord=bd09ll&extensions=3 。请求结果如下图:
结果为json格式数据:
{"content":{"location":{"lat":23.06588,"lng":115.404586},"locid":"925a2a9e3ac5be1cf003afd23c344ab3","radius":30,"confidence":0.5,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"新平路","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县新平路","business":"公平"},"result":{"error":161,"loc_time":" 21:53:28"}}
  我们需要的字段为:content字段里面的formatted_address。当然我们也可以将location里面的经度和纬度提取出来从而显示在地图上面。有的IP地址会返回pois数据,比如:183.55.116.95。返回参数如下:
{"content":{"location":{"lat":23.082367,"lng":115.466276},"locid":"3fbfff42ccd5","radius":30,"confidence":1.0,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"S335","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县S335","pois":[{"name":"双墩村","address":"汕尾市海丰县三三五省道","tag":"行政地标;村庄","location":{"lat":23.082422,"lng":115.465348},"uid":""},{"name":"双墩村委会","address":"汕尾市海丰县","tag":"政府机构;各级政府","location":{"lat":23.083394,"lng":115.465914},"uid":""},{"name":"长联塘尾","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.081358,"lng":115.467315},"uid":""},{"name":"双墩小学","address":"335省道附近","tag":"教育培训;小学","location":{"lat":23.083336,"lng":115.465061},"uid":""},{"name":"大溪头","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.090326,"lng":115.465995},"uid":""}],"location_description":"双墩村东104米"},"result":{"error":161,"loc_time":" 22:03:31"}}
此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。
通过上面的分析,用python简单的写了一个脚本,具体代码如下:
# -*- coding:utf-8 -*-
# author:allen权
import sys
import urllib2
import json
def get_ip_information(ip):
url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密钥(AK)'&coord=bd09ll&extensions=3'
request = urllib2.Request(url)
page = urllib2.urlopen(request, timeout=10)
data_json = page.read()
data_dic = json.loads(data_json)
if(data_dic.has_key("content")):
content=data_dic["content"]
address_component=content["address_component"]
formatted_address=content["formatted_address"]
print "该IP地址的具体位置为:"
print address_component["country"]
print formatted_address
if (content.has_key("pois")):
print "该IP地址附近POI信息如下:"
pois = content["pois"]
for index in range(len(pois)):
pois_name = pois[index]["name"]
pois_address = pois[index]["address"]
print pois_name, pois_address
print 'IP地址定位失败!!!'
if __name__ == '__main__':
get_ip_information('183.55.116.95')
  大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:
再放一张自己IP的测试截图:
确实精确到了路名,很准确,虽然没有pois的信息。
最后声明一下,成功率:综合定位成功率 65% &,精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据,所说有一定的概率是查询失败的!!!!
转自FreeBuf:http://www.freebuf.com/sectool/117164.html
阅读(...) 评论()ASP.NET实现根据IP获取省市地址的方法
转载 &更新时间:日 10:07:46 & 投稿:shichen2014
这篇文章主要介绍了ASP.NET实现根据IP获取省市地址的方法,主要基于QQwry.dat纯真IP数据库来实现这一功能,非常实用,需要的朋友可以参考下
本文实例讲述了ASP.NET实现根据IP获取省市地址的方法,分享给大家供大家参考。具体实现方法如下:
1、在网站的跟路径下面添加QQWry.dat(点击此处本站下载)文件,这个文件是IP数据库文件
2、添加以下一个类 IPScanner
代码如下:public class IPScanner
&&&&&&& //私有成员#region 私有成员
&&&&&&& private string dataP
&&&&&&& pr
&&&&&&& private long firstStartIp = 0;
&&&&&&& private long lastStartIp = 0;
&&&&&&& private FileStream objfs =
&&&&&&& private long startIp = 0;
&&&&&&& private long endIp = 0;
&&&&&&& private int countryFlag = 0;
&&&&&&& private long endIpOff = 0;
&&&&&&& private string errMsg =
&&&&&&& //构造函数#region 构造函数
&&&&&&& public IPScanner()
&&&&&&&&&&& this.dataPath = System.Web.HttpContext.Current.Server.MapPath("/ipdata/QQWry.dat");
&&&&&&& //公共属性#region 公共属性
&&&&&&& public string DataPath
&&&&&&&&&&& set { dataPath = }
&&&&&&& public string IP
&&&&&&&&&&& set { ip = }
&&&&&&& public string Country
&&&&&&&&&&& get { }
&&&&&&& public string Local
&&&&&&&&&&& get { }
&&&&&&& public string ErrMsg
&&&&&&&&&&& get { return errM }
&&&&&&& //搜索匹配数据#region 搜索匹配数据
&&&&&&& private int QQwry()
&&&&&&&&&&& string pattern = @"(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))";
&&&&&&&&&&& Regex objRe = new Regex(pattern);
&&&&&&&&&&& Match objMa = objRe.Match(ip);
&&&&&&&&&&& if (!objMa.Success)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& this.errMsg = "IP格式错误";
&&&&&&&&&&&&&&& return 4;
&&&&&&&&&&& }
&&&&&&&&&&& long ip_Int = this.IpToInt(ip);
&&&&&&&&&&& int nRet = 0;
&&&&&&&&&&& if (ip_Int &= IpToInt("127.0.0.0") && ip_Int &= IpToInt("127.255.255.255"))
&&&&&&&&&&& {
&&&&&&&&&&&&&&& this.country = "本机内部环回地址";
&&&&&&&&&&&&&&& this.local = "";
&&&&&&&&&&&&&&& nRet = 1;
&&&&&&&&&&& }
&&&&&&&&&&& else if ((ip_Int &= IpToInt("0.0.0.0") && ip_Int &= IpToInt("2.255.255.255")) || (ip_Int &= IpToInt("64.0.0.0") && ip_Int &= IpToInt("126.255.255.255")) || (ip_Int &= IpToInt("58.0.0.0") && ip_Int &= IpToInt("60.255.255.255")))
&&&&&&&&&&& {
&&&&&&&&&&&&&&& this.country = "网络保留地址";
&&&&&&&&&&&&&&& this.local = "";
&&&&&&&&&&&&&&& nRet = 1;
&&&&&&&&&&& }
&&&&&&&&&&& objfs = new FileStream(this.dataPath, FileMode.Open, FileAccess.Read);
&&&&&&&&&&& try
&&&&&&&&&&& {
&&&&&&&&&&&&&&& objfs.Position = 0;
&&&&&&&&&&&&&&& byte[] buff = new Byte[8];
&&&&&&&&&&&&&&& objfs.Read(buff, 0, 8);
&&&&&&&&&&&&&&& firstStartIp = buff[0] + buff[1] * 256 + buff[2] * 256 * 256 + buff[3] * 256 * 256 * 256;
&&&&&&&&&&&&&&& lastStartIp = buff[4] * 1 + buff[5] * 256 + buff[6] * 256 * 256 + buff[7] * 256 * 256 * 256;
&&&&&&&&&&&&&&& long recordCount = Convert.ToInt64((lastStartIp - firstStartIp) / 7.0);
&&&&&&&&&&&&&&& if (recordCount &= 1)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& country = "FileDataError";
&&&&&&&&&&&&&&&&&&& objfs.Close();
&&&&&&&&&&&&&&&&&&& return 2;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& long rangE = recordC
&&&&&&&&&&&&&&& long rangB = 0;
&&&&&&&&&&&&&&& long recNO = 0;
&&&&&&&&&&&&&&& while (rangB & rangE - 1)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& recNO = (rangE + rangB) /2;
&&&&&&&&&&&&&&&&&&& this.GetStartIp(recNO);
&&&&&&&&&&&&&&&&&&& if (ip_Int ==this.startIp)
&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&& rangB = recNO;
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& }if (ip_Int &this.startIp)
&&&&&&&&&&&&&&&&&&&&&&& rangB = recNO;
&&&&&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&&&&&& rangE = recNO;
&&&&&&&&&&&&&&& }this.GetStartIp(rangB);
&&&&&&&&&&&&&&& this.GetEndIp();
&&&&&&&&&&&&&&& if (this.startIp &= ip_Int &&this.endIp &= ip_Int)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& this.GetCountry();
&&&&&&&&&&&&&&&&&&& this.local =this.local.Replace("(我们一定要解放台湾!!!)", "");
&&&&&&&&&&&&&&& }else{
&&&&&&&&&&&&&&&&&&& nRet =3;
&&&&&&&&&&&&&&&&&&& this.country ="未知";
&&&&&&&&&&&&&&&&&&& this.local ="";
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& objfs.Close();
&&&&&&&&&&&&&&& return nR
&&&&&&&&&&& }catch{
&&&&&&&&&&&&&&& return1;
&&&&&&&&&&& }
&&&&&&& }// IP地址转换成Int数据#region IP地址转换成Int数据 privatelong IpToInt(string ip)
&&&&&&&&&&& char[] dot =newchar[] { '.' };
&&&&&&&&&&& string[] ipArr = ip.Split(dot);
&&&&&&&&&&& if (ipArr.Length ==3)
&&&&&&&&&&&&&&& ip = ip +".0";
&&&&&&&&&&& ipArr = ip.Split(dot);
&&&&&&&&&&& long ip_Int =0;
&&&&&&&&&&& long p1 =long.Parse(ipArr[0]) *256*256*256;
&&&&&&&&&&& long p2 =long.Parse(ipArr[1]) *256*256;
&&&&&&&&&&& long p3 =long.Parse(ipArr[2]) *256;
&&&&&&&&&&& long p4 =long.Parse(ipArr[3]);
&&&&&&&&&&& ip_Int = p1 + p2 + p3 + p4;
&&&&&&&&&&& return ip_I
&&&&&&& }//获取起始IP范围#region 获取起始IP范围 privatelong GetStartIp(long recNO)
&&&&&&&&&&& long offSet = firstStartIp + recNO *7;
&&&&&&&&&&& //objfs.Seek(offSet,SeekOrigin.Begin);&&&&&&&&&&&& objfs.Position = offS
&&&&&&&&&&& byte[] buff =new Byte[7];
&&&&&&&&&&& objfs.Read(buff, 0, 7);
&&&&&&&&&&& endIpOff = Convert.ToInt64(buff[4].ToString()) + Convert.ToInt64(buff[5].ToString()) *256+ Convert.ToInt64(buff[6].ToString()) *256*256;
&&&&&&&&&&& startIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
&&&&&&&&&&& return startIp;
&&&&&&& }// 获取结束IP#region 获取结束IP privatelong GetEndIp()
&&&&&&&&&&& //objfs.Seek(endIpOff,SeekOrigin.Begin);&&&&&&&&&&&& objfs.Position = endIpO
&&&&&&&&&&& byte[] buff =new Byte[5];
&&&&&&&&&&& objfs.Read(buff, 0, 5);
&&&&&&&&&&& this.endIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
&&&&&&&&&&& this.countryFlag = buff[4];
&&&&&&&&&&& returnthis.endIp;
&&&&&&& }//获取国家/区域偏移量#region 获取国家/区域偏移量 privatestring GetCountry()
&&&&&&&&&&& switch (this.countryFlag)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& case1:
&&&&&&&&&&&&&&& case2:
&&&&&&&&&&&&&&&&&&& this.country = GetFlagStr(this.endIpOff +4);
&&&&&&&&&&&&&&&&&&& this.local = (1==this.countryFlag) ?"" : this.GetFlagStr(this.endIpOff +8);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& default:
&&&&&&&&&&&&&&&&&&& this.country =this.GetFlagStr(this.endIpOff +4);
&&&&&&&&&&&&&&&&&&& this.local =this.GetFlagStr(objfs.Position);
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& }return"";
&&&&&&& }//获取国家/区域字符串#region 获取国家/区域字符串 privatestring GetFlagStr(long offSet)
&&&&&&&&&&& int flag =0;
&&&&&&&&&&& byte[] buff =new Byte[3];
&&&&&&&&&&& while (1==1)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& objfs.Position = offS
&&&&&&&&&&&&&&& flag = objfs.ReadByte();
&&&&&&&&&&&&&&& if (flag ==1|| flag ==2)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& objfs.Read(buff, 0, 3);
&&&&&&&&&&&&&&&&&&& if (flag ==2)
&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&& this.countryFlag =2;
&&&&&&&&&&&&&&&&&&&&&&& this.endIpOff = offSet -4;
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&& offSet = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256;
&&&&&&&&&&&&&&& }else{
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }if (offSet &12)
&&&&&&&&&&&&&&& return"";
&&&&&&&&&&& objfs.Position = offS
&&&&&&&&&&& return GetStr();
&&&&&&& }//GetStr#region GetStr privatestring GetStr()
&&&&&&&&&&& byte lowC =0;
&&&&&&&&&&& byte upC =0;
&&&&&&&&&&& string str ="";
&&&&&&&&&&& byte[] buff =newbyte[2];
&&&&&&&&&&& while (1==1)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& lowC = (Byte)objfs.ReadByte();
&&&&&&&&&&&&&&& if (lowC ==0)
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& if (lowC &127)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& upC = (byte)objfs.ReadByte();
&&&&&&&&&&&&&&&&&&& buff[0] = lowC;
&&&&&&&&&&&&&&&&&&& buff[1] = upC;
&&&&&&&&&&&&&&&&&&& System.Text.Encoding enc = System.Text.Encoding.GetEncoding("GB2312");
&&&&&&&&&&&&&&&&&&& str += enc.GetString(buff);
&&&&&&&&&&&&&&& }else{
&&&&&&&&&&&&&&&&&&& str += (char)lowC;
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&& }publicstring IPLocation(string ip)
&&&&&&&&&&& this.ip =
&&&&&&&&&&& this.QQwry();
&&&&&&&&&&& if (this.country.Trim().Contains(this.local.Trim()))
&&&&&&&&&&&&&&& returnthis.country.Trim();
&&&&&&&&&&& returnthis.country.Trim() +this.local.Trim();
3、ASP.NET根据IP获取省市地址的调用
代码如下:string ip="123.81.176.99";
IPScanner ipscaner = new IPScanner();
ipscaner.IPLocation(ip);&
string strIPAddress=ipscaner.C
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 幽默口才训练与实用技巧 的文章

 

随机推荐