Bawiłem się gniazdami na komputerze lokalnym bez połączenia sieciowego. Zobacz poniżej:
IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works
Więc jaki jest dokładnie ::1
adres IP? Czy jest to domyślny dostępny adres IP, czy jest to adres sprzężenia zwrotnego? co dzieje się z powyższym kodem (linią roboczą) na maszynie z dedykowanym adresem IP i połączeniem sieciowym?
EDYTOWAĆ:
dokładny kod służy do wiązania określonego adresu IP z gniazdem. Oto ona:
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);
}
c#
ip
system.net
Xaqron
źródło
źródło
IPAddress.Any
jest::0
, należy używaćIPAddress.Loopback
do połączenia lokalnego (pętli zwrotnej).IPAddress.Pars
jest naprawdęIPAddress.Parse
, prawda?Odpowiedzi:
::1
to adres sprzężenia zwrotnego w IPv6. Pomyśl o tym jako o wersji IPv6127.0.0.1
.Zobacz http://en.wikipedia.org/wiki/Localhost
źródło
IPAddress.Parse("127.0.0.1")
nie działa na moim komputerze.Windows Server 2008 Enterprise Edition 64-bit
i nie mam zainstalowanej zapory innej firmy. Zastanawiam się, dlaczego nie mogę połączyć się127.0.0.1
z gniazdem, gdy::1
jest dostępne.Aby dodać do tego trochę więcej informacji, w IPv6 adres sprzężenia zwrotnego jest reprezentowany jako 127 zer, po których następuje 1, tj. (0000 ... 127 razy..1). Jego reprezentacja powinna wyglądać następująco -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001, ale mamy do tego krótką reprezentację. Jeśli w jednym bloku znajdują się wszystkie zera, możesz zastąpić je pojedynczym 0. W ten sposób otrzymujemy -> 0: 0: 0: 0: 0: 0: 0: 0001 . Ponownie widzimy, że mamy ciągi zer, można je wyeliminować i otrzymujemy -> :: 0001 -> :: 1 .
źródło