C# 网络应用关于Ip一些现象
1 string hostName = Dns.GetHostName(); 2 IPAddress[] myIps = Dns.GetHostAddresses(hostName); 3 4 Console.WriteLine("Ip any : {0}", IPAddress.Any); 5 Console.WriteLine("Ip broadcast : {0}", IPAddress.Broadcast); 6 Console.WriteLine("Ip none : {0}", IPAddress.None); 7 Console.WriteLine("Ip loopback : {0}", IPAddress.Loopback); 8 foreach (IPAddress ip in myIps) 9 { 10 Console.WriteLine("Ip host ip : {0}", ip); 11 }
输出结果:
注意:
一、
IPAddress.Any实际的值是(0.0.0.0)本身不属于有效ip地址的范畴,所以在TCP/UDP连接中用来表示要连接的对方的地址是无效的。但是如果用来socket.bind(myHost),就表示本机所有对应端口都被监听了(如下代码)
IPEndPoint hostA = new IPEndPoint(IPAddress.Any, myHostPort); Socket socketA = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socketA.Bind(hostA);//通过此种方式可以监听本机所有ip的myHostPort端口了
二、
IPAddress.LoopBack的值永远是(127.0.0.1)永远代表本机地址,且不接触外部网络;