【问题标题】:What is IP address '::1'?IP地址'::1'是什么?
【发布时间】:2011-06-04 10:17:20
【问题描述】:

我在没有网络连接的本地机器上玩套接字。见下文:

IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works

那么::1 IP 地址到底是什么?它是默认的可用 IP 地址还是环回地址?在具有专用 IP 地址和网络连接的机器上,上述代码(工作行)会发生什么?

编辑:

确切的代码用于将特定的 IP 地址绑定到套接字。这里是:

ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
// here's the bind delegate:
private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount)
{
   return new IPEndPoint(IPAddress.Parse("::1"), 0);
}

【问题讨论】:

  • IPAddress.Any::0,您应该使用IPAddress.Loopback 进行本地(环回)连接。
  • 我认为这应该在 SuperUser.com 上发布
  • 我假设IPAddress.Pars 的部分实际上是IPAddress.Parse,对吗?

标签: c# ip system.net


【解决方案1】:

::1 是 IPv6 中的环回地址。将其视为127.0.0.1 的 IPv6 版本。

http://en.wikipedia.org/wiki/Localhost

【讨论】:

  • 在上面的例子中 IPAddress.Parse("127.0.0.1") 在我的机器上不起作用。
  • @Xaqron - 这听起来更像是一个超级用户的问题,因为这可能意味着您的 IPv4 TCP/IP 堆栈出现了问题。
  • Xaqron,也许防火墙阻止了 v4 而不是 v6 流量?
  • 我使用Windows Server 2008 Enterprise Edition 64-bit,没有安装第三方防火墙。我想知道为什么当::1 可用时我不能将127.0.0.1 绑定到我的套接字。
  • @Xaqron,您能否向我们展示您尝试使用的代码?您说“有效”和“无效”,但这对我们没有帮助。
【解决方案2】:

只是为了添加更多信息,在 IPv6 中,环回地址表示为 127 个零,后跟一个 1,即(0000...127 次..1)。 它的表示应该是这样的 -> 0000:0000:0000:0000:0000:0000:0000:0001 但我们对此有一些简短的表示。如果单个块中全是零,则可以将其替换为单个 0。因此它变为 -> 0:0:0:0:0:0:0:0001。 再次,我们可以看到我们有零的运行,它们可以被消除,我们得到 -> ::0001 -> ::1 .

【讨论】:

  • (要清楚,这里的“127 个零”是二进制的,不是十六进制的)
【解决方案3】:

简单的答案是: ::1是IPV6环回地址0:0:0:0:0:0:0:1的压缩格式。相当于IPV4地址127.0. 0.1

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多