首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPV6到国家/地区

IPV6到国家/地区
EN

Stack Overflow用户
提问于 2012-05-06 15:39:59
回答 2查看 1.1K关注 0票数 2

对于IP版本6 http://www.ip2location.com/free/ipv6,有一个简单的IP到国家/地区数据库

代码语言:javascript
复制
CREATE TABLE `ip2location_ipv6`(
    `ip_from` DOUBLE,
    `ip_to` DOUBLE,
    `ipv6_from` VARCHAR(40),
    `ipv6_to` VARCHAR(40),
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    INDEX `idx_ip_from` (`ip_from`),
    INDEX `idx_ip_to` (`ip_to`),
    INDEX `idx_ip_from_to` (`ip_from`, `ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

此数据库的示例行值:

代码语言:javascript
复制
"42540528726795050063891204319802818560", "42540528806023212578155541913346768895", "2001:200::", "2001:200:ffff:ffff:ffff:ffff:ffff:ffff", "JP", "Japan"

现在我想获取Ip地址的国家名称。这是我的SQL:

代码语言:javascript
复制
SQL = "SELECT country_code FROM ip2location_ipv6 WHERE " & IPNumber & " BETWEEN ip_from AND ip_to"

在这个sql中,有一个名为IPNumber的参数。在IPV4中,我可以很容易地计算IPNumber。

代码语言:javascript
复制
IPV4: a.b.c.d  => IPNumber = a*(256*256*256) + b*(256*256) + C*(256) + d

或者我也可以这么做

代码语言:javascript
复制
IPNumber = (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse("IP_address_Version_4").Address);

但是我在C#中没有任何IPV6的解决方案。例如,它想要在此数据库中查找此IP "2001:DB8::dcaf:BAD“的国家名称

EN

回答 2

Stack Overflow用户

发布于 2012-05-06 15:46:48

要从二进制转换为标准IPv6表示法,请执行以下操作:

public IPAddress(byte[] address) constructor使用IPAddress类。

在构造函数中传入IPv6地址的字节数组,然后使用.ToString()方法执行print it in standard notation

要将标准IPv6表示法转换为二进制,请执行以下操作:

创建一个新的IPAddress对象,并使用IPAddress.TryParse(string standardNotation)将标准符号字符串转换为二进制值。

票数 1
EN

Stack Overflow用户

发布于 2013-04-08 21:39:02

你可以使用MySQL5.6的最新版本,它已经支持IPv6和命令INET6_ATON(),INET6_NTOA()。

你的桌子将会是-

代码语言:javascript
复制
CREATE TABLE `ip2location_ipv6`(
    `ip_from` int(11) unsigned,
    `ip_to` int(11) unsigned,
    `ipv6_from` varbinary(16),
    `ipv6_to` varbinary(16),
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    INDEX `idx_ip_from` (`ip_from`),
    INDEX `idx_ip_to` (`ip_to`),
    INDEX `idx_ip_from_to` (`ip_from`, `ip_to`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10468961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档