2011-01-06 22 views
73

Yerel ağda ağ bağlantısı olmadan soketlerle oynuyordum. Aşağıya bakın:IP adresi ':: 1' nedir?

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

Yani ::1 IP adresi tam olarak nedir? Varsayılan kullanılabilir IP adresi mi, yoksa geri dönüş adresi mi? Özel IP adresi ve ağ bağlantısı olan bir makinede yukarıdaki kod (çalışma hattı) ne olur?

tam kod soket belirli bir IP adresi bağlamak için kullanılır: DÜZENLEME

. İşte burada:

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

'IPAdresi.Adı' '0', Yerel (geri döngü) bağlantısı için' IPAddress.Loopback' kullanmalısınız. –

+0

Bu sanırım SuperUser.com – Kamyar

+0

adresinde yayınlanmış olmalıyım 'IPAddress.Pars' gerçekten 'IPAddress.Parse' diyen kısmı varsayarak, doğru mu? Yukarıdaki örnekte – Brad

cevap

100

::1 IPv6 içinde geri döngü adresidir. Bunu, 127.0.0.1 IPv6 sürümü olarak düşünün.

+1

, 'IPAddress.Parse (" 127.0.0.1 ")' de makinemde çalışmaz. – Xaqron

+1

@Xaqron - bu bir süper kullanıcı sorusu gibi görünüyor, çünkü muhtemelen IPv4 TCP/IP yığınınızla bir şeylerin kırılması anlamına geliyor. –

+0

'IPAddress.Any ', 0.0.0.0 – Brad

5

http://en.wikipedia.org/wiki/Localhost Sadece 127 sıfır, 1 yani (0000 ... 127 times..1) izledi olarak temsil edilir IPv6 geri döngü adresi, kendisine biraz daha bilgi eklemek için bkz. Bu temsilin böyle olması gerekir ->0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 Ancak bunun için kısa bir form gösterimi var. Tek bir blokta tüm sıfırlar varsa bunu tek 0 ile değiştirebilirsiniz. Böylece ->0: 0: 0: 0: 0: 0: 0001. Yine biz sıfır silsileleri sahip olduğunu görebilirsiniz, bunlar ortadan kaldırılabilir ve biz olsun ->:: 0001 ->:: 1.