由于IPV6地址有16个字节且它们没有数据类型存储在c ++中,我想存储IPV6地址,并对IPv6地址进行一些比较,请告诉我怎么做
我在PHP中匹配ip地址.所以我的检查是:
function checkIP($ip){
$ip = trim($ip);
if (preg_match("\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b", $ip)) return true;
$v6pattern = "/
(\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,6}\Z)|
(\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}\Z)|
(\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}\Z)|
(\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}\Z)|
(\A([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}\Z)|
(\A([0-9a-f]{1,4}:){1,6}(:[0-9a-f]{1,4}){1,1}\Z)|
(\A(([0-9a-f]{1,4}:){1,7}|:):\Z)|
(\A:(:[0-9a-f]{1,4}){1,7}\Z)|
(\A((([0-9a-f]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|
(\A(([0-9a-f]{1,4}:){5}[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|
(\A([0-9a-f]{1,4}:){5}:[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,1}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A(([0-9a-f]{1,4}:){1,5}|:):(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
(\A:(:[0-9a-f]{1,4}){1,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)
/x";
if (preg_match($v6pattern, $ip)) return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误: warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\index.php on line 5
第5行是 if (preg_match("\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b", $ip)) return true;
怎么了?
我想知道GET从IPv4服务器到IPv6服务器使用的HTTP 请求的头格式之间的区别?
现在,我目前使用以下格式:
"GET /"+myFileToDownLoad+" HTTP/1.1\r\n"+
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n"
+"Referer: http://"+myDstIp+"/\r\n"
+"Accept-Language: he\r\n"
+"Accept-Encoding: gzip, deflate\r\n"
+"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n"
//+"Host: "+myDstIp+"\r\n"
+"Host: "+((myHost==null)?myDstIp:myHost)+"\r\n"
+"Connection: Close\r\n\r\n";
Run Code Online (Sandbox Code Playgroud)
那么,如果我想使用IPv6服务器,是否有必要更改格式?
我们s是通过由插座的文件描述符socket(PF_INET, ...).
如果我打电话accept(s, (struct sockaddr *) &addr, ...),哪里addr是类型struct sockaddr_in,我可以假设返回地址的格式是IPv4,即,
addr.sin_family == AF_INET ?
我希望在我的一个 shell 脚本中使用我的 eth0 ipv6 地址。我可以使用 ifconfig 和 grep 来检索它,但我确定它一定在某个我没有看到的文本文件中的某个地方,这最终会使检索变得更加容易。有谁知道我应该在哪里看?
谢谢
如果我们使用32位整数来存储IPv4地址,则必须考虑整数的字节顺序.
但是,由于几乎所有平台下都没有内置的128位整数类型,因此必须将IPv6地址存储到字节数组中,因此,我认为字节顺序不再是问题.
我对么?或者IPv6是否有相应的功能htonlXXX?
参考这个问题和ASIO库,我想知道ICMP v6应答包的最大大小是多少.我正在使用ASIO库来监听和接收ICMPv6数据包,但我不知道使用什么大小的缓冲区来防止缓冲区溢出.我对IPv6支持扩展标头感到困惑.
例如:
asio::streambuf replyBuffer;
replyBuffer.consume(replyBuffer.size());
size_t length = icmpV6Socket->receive(replyBuffer.prepare(65536) );
Run Code Online (Sandbox Code Playgroud) 我已经搜索了如何实现一个简单的 ipv6 多播示例的示例,但是我只找到了使用 ipv4 的示例。
任何人都可以提供一个简单的“helloworld”ipv6 多播示例吗?
Maxmind有两个免费的GeoLite2 cvs文件,我们可以用它来查找与IP地址范围相关的位置.我想在SQL Server中创建一个使用导入的表([GeoLite2_City_Blocks]和[GeoLite2_City_Locations])的存储过程,获取在IP地址中传递的varchar(45)字符串并返回与该IP地址关联的位置.我原本以为网上会有相关的T-SQL代码,但我找不到它.
我查看了在SQL中查询GeoLite2国家CSV,但我根本不明白Prefix_Length(在Blocks表中称为Network_mask_Length),是或是.如果它们与CIDR前缀相同(请参阅:http://en.wikipedia.org/wiki/IPv6_subnetting_reference),我会更加困惑,因为Network_mask_Length可能是118,119或任何其他未显示的数字那个维基百科页面.
我已经看到一个网页在SQL Server中讨论IPv6,建议使用零进行填充以进行比较.我想不能简单地查询免费的GeoLite2而不至少在该表的最终IP地址中添加一个额外的列?
我想我可以从IPv4地址前面删除":: ffff:",如果这是正确的说法.但我仍然没有得到如何将network_mask_length(前缀)字段转换为我理解的内容.然后填零IPv6地址,但后来我仍然不知道该前缀是什么.
我的问题是:
我正在寻找一种在一个特定python脚本中抑制AAAA解析的通用方法.有一个简单的方法吗?
我使用Youtube Data API for python,它使用httplib2作为握手的东西.我想我需要一些低级的东西,如套接字覆盖或其他东西.
要查找的域是谷歌域,因此使用特定前缀的IPv6首选项选项将无法正常工作.
底层问题是我的IPv6地址目前位于伊拉克的地理位置是错误的......我已经提交了修复该请求的请求,但同时希望运行该脚本.