ネットワークに接続していないローカルマシンのソケットで遊んでいました。下記参照:
IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works
それで、まさに::1
IPアドレス ?デフォルトの利用可能な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);
}
::1
は、IPv6のループバックアドレスです。 127.0.0.1
のIPv6バージョンと考えてください。
http://en.wikipedia.org/wiki/Localhost を参照してください
もう少し情報を追加するために、IPv6ループバックアドレスでは、127個のゼロとそれに続く1個のi.e(0000 ... 127回..1)で表されます。表現は次のようになっているはずです-> 00:0000:0000:0000:0000:0000:0000:0001しかし、これには短い表現があります。単一のブロックにすべてゼロがある場合、単一の0に置き換えることができます。したがって、-> :0:0:0:0:0:0:0001になります。繰り返しますが、ゼロの連続があることがわかります。ゼロを削除すると、-> :: 0001-> :: 1が得られます。