Eu estava brincando com soquetes na máquina local sem conexão de rede. Ver abaixo:
IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works
Então, qual é exatamente ::1
o endereço IP? É o endereço IP padrão disponível ou é o endereço de loopback? o que acontece com o código acima (linha de trabalho) em uma máquina com endereço IP dedicado e conexão de rede?
EDITAR:
o código exato é usado para vincular um endereço IP específico ao soquete. Aqui está:
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);
}
IPAddress.Pars
está realmente IPAddress.Parse
correta?
IPAddress.Any
é::0
, você deve usarIPAddress.Loopback
para conexão local (loopback).