2011-01-06 9 views
73

Stavo giocando con i socket sulla macchina locale senza connessione di rete. Vedi sotto:Che cos'è l'indirizzo IP ':: 1'?

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

Quindi, qual è esattamente l'indirizzo IP ? È l'indirizzo IP predefinito disponibile o è l'indirizzo di loopback? cosa succede al codice precedente (linea di lavoro) su una macchina con indirizzo IP dedicato e connessione di rete?

EDIT:

codice esatto viene utilizzato per associare un indirizzo IP specifico alla presa. Eccolo:

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', È necessario utilizzare 'IPAddress.Loopback' per la connessione locale (loopback). –

+0

Penso che questo avrebbe dovuto essere pubblicato su SuperUser.com – Kamyar

+0

Suppongo che la parte che dice 'IPAddress.Pars' è in realtà' IPAddress.Parse', corretto? – Brad

risposta

100

::1 è l'indirizzo di loopback in IPv6. Pensala come la versione IPv6 di 127.0.0.1.

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

+1

nell'esempio sopra 'IPAddress.Parse (" 127.0.0.1 ")' non funziona sul mio computer. – Xaqron

+1

@Xaqron: sembra più una domanda di superutente, perché probabilmente significa che qualcosa è rotto con lo stack TCP/IP IPv4. –

+0

'IPAddress.Any' risolve in 0.0.0.0 – Brad

5

solo per aggiungere po 'più di informazioni ad esso, in IPv6 indirizzo di loopback è rappresentato come 127 zeri seguiti da un 1 vale a dire (0000 ... 127 times..1). La rappresentazione dovrebbe essere stata così ->0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 ma abbiamo una rappresentazione di forma breve per questo. Se ci sono tutti gli zeri in un singolo blocco, puoi sostituirlo con un singolo 0. Quindi diventa ->0: 0: 0: 0: 0: 0: 0: 0001. Ancora una volta possiamo vedere che abbiamo delle serie di zeri, che possono essere eliminate e otteniamo ->:: 0001 ->:: 1.