当访问我在 www 上的网站之一并显示 $_SERVER['REMOTE_ADDR'] 时,有时显示 ipv4 地址,有时显示 ipv6。很公平。我知道这种联系将是其中之一,而不是两者兼而有之。但是 - 我想获得这两个地址。像whatsmyipaddress.com 这样的网站可以同时显示这两者。有谁知道他们是如何实现这一目标的?非常感谢。
我一直在压缩 IPv6 地址,但由于某种原因我无法压缩这个地址:
\n2\xe2\x80\x8bb\xe2\x80\x8b0\xe2\x80\x8b6\xe2\x80\x8b:\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b:\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b:\xe2\x80\x8b1\xe2\x80\x8bf\xe2\x80\x8b2\xe2\x80\x8bb\xe2\x80\x8b:\xe2\x80\x8bd\xe2\x80\x8b7\xe2\x80\x8b7\xe2\x80\x8bf\xe2\x80\x8b:\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b:\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b0\xe2\x80\x8b:\xe2\x80\x8b8\xe2\x80\x8b9\xe2\x80\x8bc\xe2\x80\x8be\xe2\x80\x8b
这也是我压缩的:2b06::1f2b:d77f::89ce
但这不起作用,我想知道为什么。
\n我的源代码使用csharp进行ip检查.
现在,我必须考虑关于ipv4和ipv6的检查规则.
客户端可能像↓
?only ipv4
?only ipv6
?both ipv4 and ipv6
Run Code Online (Sandbox Code Playgroud)
对不起,我是网络新手.
因此,有人可以给我一些关于ip检查的建议吗?
谢谢.
关于IP检查:
我现在有一张像↓这样的支票:
bool isgoodip()
{
return ip.startwith(173);
}
Run Code Online (Sandbox Code Playgroud)
如果客户端只有ipv6,我该如何进行检查呢?
并且,是否有服务器设置可以将ipv6转换为ipv4 auto?
在IRC DCC通信中,为了启动连接,您必须向另一个人提供IP地址和端口.但是,您如何在IPv6世界中处理这个问题?
我正在用Java编写机器人的IRC框架部分,所以我需要能够处理各种情况.似乎没有一种标准的方法来处理这个问题
我通过IPv6对现有客户进行了一些测试(两个Teredo客户端通过Ipv6连接到freenode
我知道DCC协议有一些扩展,以人类可读的格式发送IP地址,但这些扩展不是标准的,也不是广泛支持的.发送0似乎不是我的机器人未来证明的合适方式.
现在我正在将IPv6地址转换为BigInteger,但另一方面弄清楚BigInteger是IPv4还是IPv6地址是不是让我感到困惑(我后来问这个怎么做).
TL; DR:在IPv6环境中处理DCC的适当方法是什么?我应该发送0,我是否应该发送任何内容并在机器人中引发其不受支持的异常,或者我应该发送怪物BigInteger?
我想知道在C++中存储IPv6的最有效方法是什么?
基本上我需要一种尽可能提供灵活性的格式,以及与现有库的兼容性.我的第一个想法是使用一个简单的,std::vector<int>因为这将允许我轻松访问地址的每个部分.
这是一个好的解决方案吗?或者我以后可能会遇到麻烦?
我想要得到的内容http://en.wikipedia.org使用java.net.URL的openConnection()方法.
我发现en.wikiepdia.org同时具有IPv4和IPv6地址:
$ host en.wikipedia.org
en.wikipedia.org is an alias for wikipedia-lb.wikimedia.org.
wikipedia-lb.wikimedia.org is an alias for wikipedia-lb.eqiad.wikimedia.org.
wikipedia-lb.eqiad.wikimedia.org has address 208.80.154.225
wikipedia-lb.eqiad.wikimedia.org has IPv6 address 2620:0:861:ed1a::1
Run Code Online (Sandbox Code Playgroud)
如何使用IPv6地址访问该站点?
我想要printf类型为ipv6地址的值 struct in6_addr 和类型为u_int32_tconsole的ipv4地址.
我尝试过类型转换,但会产生错误
error: aggregate value used where an integer was expected
printf("---------------- ipv4= %zu ipv6 = %zu ",(size_t)ipv4, (size_t)ipv6);
Run Code Online (Sandbox Code Playgroud)
%s ,%lu在堆栈溢出和其他地方经历旧问题之后,我还尝试了许多其他方法.
如果有人有解决方案,我将非常感激.
例如:这是一个IP地址:fc06:0000:0002:0760:e000:7201:7003:06b7.但我想将":0"或:和更多的零替换为":".所以看起来应该是这样的:fc06 :: 2:760:e000:7201:7003:6b7
代码:
if (Test-Path $file){
foreach ($line in Get-Content $file){
$line=$line.Replace(":0+",":")
Write-Output $line
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,问题在于:0+.所以:我怎么能说出最后一个角色中的一个或多个(现在:零)?因为简单:0+不起作用.谢谢!
我试图了解IPv6的UDP校验和计算方法.对于IPv4数据包,我找到了这个链接 - http://www4.ncsu.edu/~mlsichit/Teaching/407/Resources/udpChecksum.html.我有一个包:
IPv6标头是 - 60 00 00 00 00 0c 11 fd 21 00 00 00 00 00 00 01 ab cd 00 00 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 60
UDP标头是 - 26 92 26 92 00 0c 7e d5
数据为 - 12 34 56 78
根据校验和计算,校验和为7ed5.任何人都可以解释校验和是如何产生这种价值的吗?我想手动计算它来理解方法.
我java.net.Inet6Address用来验证输入字符串是否是有效的IPv6地址.
这是我的代码片段:
public static boolean isValidIPv6ddress(String address) {
if (address.isEmpty()) {
return false;
}
try {
Object res = InetAddress.getByName(address);
return res instanceof Inet6Address;
} catch (final UnknownHostException ex) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,true即使对于以下无效的输入,上述方法也会返回:
System.out.println(isValidIPv6ddress("2A00:17C8:50C:0000:0000:0000:0000:00001"));
System.out.println(isValidIPv6ddress("2A00:17C8:50C:0000:0000:00000000000000:0000:00001"));
System.out.println(isValidIPv6ddress("2A00:17C8:50C:00001235:0000:00000000000000:0000:00001"));
Run Code Online (Sandbox Code Playgroud)
API 会忽略前导零吗?或者API中是否存在错误?