Saya bermain dengan soket di mesin lokal tanpa koneksi jaringan. Lihat di bawah:
IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works
Jadi apa sebenarnya ::1
alamat IP itu? Apakah ini alamat IP default yang tersedia atau alamat loopback? apa yang terjadi dengan kode di atas (jalur kerja) pada mesin dengan alamat IP khusus dan koneksi jaringan?
EDIT:
kode tepat digunakan untuk mengikat alamat IP tertentu ke soket. Ini dia:
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
sumber
sumber
IPAddress.Any
adalah::0
, Anda harus menggunakanIPAddress.Loopback
untuk koneksi lokal (loopback).IPAddress.Pars
benarIPAddress.Parse
, benar?Jawaban:
::1
adalah alamat loopback di IPv6. Anggap saja sebagai versi IPv6127.0.0.1
.Lihat http://en.wikipedia.org/wiki/Localhost
sumber
IPAddress.Parse("127.0.0.1")
tidak berfungsi di mesin saya.Windows Server 2008 Enterprise Edition 64-bit
dan tidak ada firewall pihak ketiga yang terpasang. Saya bertanya-tanya mengapa saya tidak bisa mengikat127.0.0.1
ke soket saya saat::1
tersedia.Hanya untuk menambahkan lebih banyak info ke dalamnya, dalam alamat loopback IPv6 direpresentasikan sebagai 127 nol diikuti oleh 1 yaitu (0000 ... 127 kali..1). Representasinya seharusnya seperti ini -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 tetapi kami memiliki beberapa representasi bentuk singkat untuk ini. Jika ada semua nol dalam satu blok, Anda dapat menggantinya dengan satu 0. Jadi menjadi -> 0: 0: 0: 0: 0: 0: 0: 0001 . Sekali lagi kita dapat melihat bahwa kita memiliki angka nol, mereka dapat dihilangkan dan kita mendapatkan -> :: 0001 -> :: 1 .
sumber