gpt4 book ai didi

.net - 电源外壳;即使没有 IPv6,为什么此代码总是返回 'True'?这是错的吗?

转载 作者:行者123 更新时间:2023-12-03 03:23:41 25 4
gpt4 key购买 nike

不是 powershell 专家,但作为 Windows 10 小项目的一部分,正在做一些检查 IPv6 连接的事情。这(下面的代码)就是我正在使用的,如果可能的话,我想继续使用它,因为它很快并且不涉及某处返回公共(public) View IPv6 地址的网站。使用的远程 IPv6 地址 (2001:4860:4860::8888) 是 Google 公共(public) IPv6 DNS。我从一些代码中得到了这个想法,其中 Google Ipv6 DNS 服务器用于检查 Chrome 中的全局 Ipv6 连接性> https://codereview.chromium.org/141023002 <

$Saddrf   = [System.Net.Sockets.AddressFamily]::InterNetworkV6;
$Stypeg   = [System.Net.Sockets.SocketType]::Dgram ;
$Ptypeg   = [System.Net.Sockets.ProtocolType]::UDP ;
$Sockg    = New-Object System.Net.Sockets.Socket($Saddrf, $Stypeg, $Ptypeg);
$Sockg.Connect('2001:4860:4860::8888', 53); $cnx = $Sockg.Connected;
write $cnx

它的问题是,即使在接口(interface)适配器上禁用了 IPv6 并且禁用了 Teredo,当不应该连接时它仍然会返回“True”(已连接)。当接口(interface)适配器上没有启用 IPv6 或 IPv6 被防火墙或其他东西阻止时,我希望它返回“False”。我做错了什么吗?

最佳答案

UDP 协议(protocol)是无连接的。因此,与 TCP 不同,“连接”状态对其没有实际意义(我怀疑您只收到硬编码的 stub 值)。然后,您可以尝试从一开始就切换到 TCP 版本的 DNS 请求(尽管 RFC 建议仅当 UDP 响应包含“截断”标志时才使用 TCP DNS)。

关于.net - 电源外壳;即使没有 IPv6,为什么此代码总是返回 'True'?这是错的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49208683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com