什么是IP地址':: 1'?


107

我在没有网络连接的本地计算机上使用套接字。见下文:

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
IPAddress.Any::0,您应该IPAddress.Loopback用于本地(环回)连接。
J-16 SDiZ 2011年

我认为这应该已经发布在SuperUser.com上
Kamyar'1

我假设所说的部分IPAddress.Pars确实是IPAddress.Parse正确的吗?
Brad

Answers:


150

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

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


1
在上面的示例IPAddress.Parse("127.0.0.1")中,我的计算机上不起作用。
Xaqron 2011年

1
@Xaqron-听起来更像是一个超级用户问题,因为这可能意味着您的IPv4 TCP / IP堆栈出现了问题。
Joel Coehoorn

Xaqron,也许防火墙阻止了v4,但没有阻止v6流量?
SilverbackNet

我使用Windows Server 2008 Enterprise Edition 64-bit并且未安装第三方防火墙。我想知道为什么在可用时不能绑定127.0.0.1到套接字::1
Xaqron 2011年

@Xaqron,您能告诉我们您要使用的代码吗?您说“有效”和“无效”,但这对我们没有帮助。
布拉德(Brad)

18

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


2
(要清楚,这里的“ 127个零”是二进制的,而不是十六进制的)
user202729
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.