今天在家里没有什么事做,就在网上走走看,看了一篇根据IP地址找到国家;这个其实在我们工作都用到个,但是不知道是怎么来做的.
在下面我将把http://www.codeproject.com/KB/aspnet/aspxcode_net.aspx翻译过与大家一起来分享;
原理:现在各个国家的IP都有一个IP Begin Number 和一个Ip End Number数字,把国家的开始的数据,各结束的数据都存在数据库
最后通过一个计算公式把真实的IP地址转换成Ip Number,从数据库中找在Begin ,End之间的,如果在这间,就是这个国家的了;
关于各个国家的IP Number这个应该是国标的吧,应该不会变的,在文章的后提供下载;
IP Number计算公式:
<!---->IP Number = 16777216*w + 65536*x + 256*y + z (1)
where
IP Address = w.x.y.z
说明:16777216,65536,256;这个数都是系数,就像圆周率3.14一样
w.x.y.z分别对应真实的IP地址,eg:192.168.0.19;link
eg:
<!---->IP Address = 202.186.13.4
So, w = 202, x = 186, y = 13 and z = 4
IP Number = 16777216*202 + 65536*186 + 256*13 + 4
= 3388997632 + 12189696 + 3328 + 4
= 3401190660
这样就得到一个Ip Number了,现在我们就可以到我们的数据库去找它对就的IP段,即能得来是哪一个国家
关于从数据库的代码我就不多说了哟
关键是我们要明白原理,找到解决方案的思路;
国标IP范围下载:http://files.cnblogs.com/caodaiming/ip-to-country.zip
分享到:
相关推荐
本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...
IP地址(Internet Protocol Address)是 Assign Internet Number Authority(IANA)分配给每个设备的唯一标识符,以便在Internet上进行通信。IP地址由四个数字组成,之间用点号分隔,每个数字范围从0到255。 二、IP...
这里,`conv_ip_to_number`是另一个辅助函数,用于将IPv4地址转换成数字形式。在Java中,你可以通过JDBC接口来调用这个Oracle FUNCTION: ```java import java.sql.CallableStatement; import java.sql.Connection;...
2. IP地址转换:通过JavaScript,可以实现IPv4与IPv6之间的相互转换,例如使用`Buffer`对象处理二进制数据,或者利用第三方库如`ipaddr.js`。 3. IP地址有效性验证:利用正则表达式,可以编写函数验证输入的字符串...
- `ip2long()` 是PHP内建函数,同样可以将IP地址转换为整数。这个函数在早期的PHP版本中更常用,但在某些情况下可能会对IPv6地址处理不当。 - `long2ip()` 函数将整数转换回IP地址,与`inet_ntoa()`类似。这两个...
锐捷交换机 NAT 配置是指在锐捷企业版路由器中实现网络地址转换(NAT)的配置过程。NAT 是一种网络技术,能使多个内部 IP 地址映射到一个外部 IP 地址,从而实现多个设备共享一个外部 IP 地址上网。 锐捷交换机 NAT...
### 内外网结构下的网络地址转换(NAT/PAT) #### 实验目的 通过本次实验,深入了解网络地址转换(Network Address Translation, NAT)及其端口地址转换(Port Address Translation, PAT)的技术原理与应用场景,...
IP国家标准数据库 IP-Country Database 包括转换IP地址到IP值方法 convert a IP Address to a IP Number 来源IP2Location
网络地址转换(NAT,Network Address Translation)是一种网络技术,用于将私有网络中的IP地址转换为公共IP地址,以便内部网络的设备可以与外部网络(如互联网)通信。NAT技术在解决IPv4地址短缺问题和提高网络安全...
// 将IP地址转换为BigInteger // ... return null; // 实际应用中应返回转换结果 } private static String toDottedDecimal(BigInteger number) { // 将二进制数转换为点分十进制格式 // ... return ""; //...
在易语言中,处理IP地址转换可以使用字符串操作和数学计算相结合的方式。 转换过程主要包括两个步骤: 1. 文本IP到数字IP:将文本IP地址的每个八位段转换为整数,然后将这四个整数相加得到数字IP。易语言中,可以...
在上述代码中,作者通过将IP地址转换成二进制形式,并结合子网掩码来计算出特定子网范围内的IP地址。 1. **IP地址转换**: - 首先,从输入的字符串中分离出IP地址和子网掩码。例如,从 "192.168.1.1/24" 中提取 ...
NAT的核心功能是将私有网络内部的IP地址转换为公有IP地址,以便这些设备能够通过互联网进行通信。这一过程不仅包括IP地址的转换,还可能涉及到端口号的重定向,即所谓的端口地址转换(Port Address Translation,PAT...
所有这些私有IP地址都将通过地址池 `nat_pool` 的一个或多个公共IP地址(`200.1.1.1` 至 `200.1.1.10`)进行NAT转换,并启用了端口复用。 ##### 3.3 相关命令 - `ip nat pool`:创建一个NAT地址池。 - `access-list...
server ipAddress number numberForConversion - 记录跟踪服务器number numberForConversion的 IP 地址number numberForConversion - 记录将要转换的number numberForConversion conversions conversionString - ...
首先,IP文转数(IP Text to Number)是指将IP地址的文本表示形式转换为数字表示。在IP地址中,如"192.168.1.1",每个部分对应一个介于0到255之间的十进制数字。转换过程中,每个部分会被转换成一个8位二进制数,...
- 将计算得到的网络地址和最大地址转换回十进制表示,并以字符串形式返回。 #### 示例解析 假设我们有一个IP地址为“192.168.1.1/24”,按照上述步骤进行处理: 1. **提取IP地址与子网掩码**: - IP地址:“192...
NAT(Network Address Translation,网络地址转换)是一种将一个IP地址转换为另一个IP地址的技术,广泛应用于现代网络中。动态NAT配置是NAT配置的一种,通过动态分配IP地址池中的地址来满足内部主机对外部网络的访问...
使用这个数据库时,你可以通过各种编程语言(如Python、Java、C#等)的MaxMind库来实现接口调用,将IP地址转换为ASN和其他相关信息。例如,Python的`geoip2`库可以方便地处理.mmdb文件,提供API来查询特定IP的ASN。 ...
1. **NAT的基本操作**:NAT的核心功能是将内部网络的私有IP地址转换为全球唯一的公网IP地址,以允许内部设备与外部网络通信。本地IP地址是指在内网中使用的地址,而全局IP地址则是对外公开的地址,用于互联网通信。 ...