134

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

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

那么究竟什么是::1IP地址?它是默认的可用 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);
}
4

3 回答 3

179

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

请参阅http://en.wikipedia.org/wiki/Localhost

于 2011-01-06T03:18:39.333 回答
27

只是为了添加更多信息,在 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

于 2017-06-14T11:49:10.610 回答
0

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

于 2021-12-22T09:41:17.363 回答