上一节写到了在服务器端需要和本地的IPEndPoint绑定,而建立本地的IPEndPoint时,不仅要选择一个本地的端口,还要知道主机的本地IP
如何使用C#语言获取主机的本地IP呢?
第一种方法:
//获得本地的IP地址族
IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] localIpGroup = ipe.AddressList;
其中,Dns.GetHostName() 可以获取主机名,之后使用Dns.GetHostEntry(hostname) 获取一个IPHostEntry
什么是IPHostEntry呢?是一个主机地址信息的容器类,之后使用其实例的变量成员AddressList获得该主机的IP地址列表;
但是,此时获得IP地址列可能是ipv4地址也可能是Ipv6地址,使用下面一行代码便可区分:
localIPGroup[i].AddressFamily == AdressFamily.InterNetwork 即可
注:ipv6地址属于 AddressFamily.InterNetworkV6
第二种方法:
IPAdress[] localIpGroup = Dns.GetHostAddress(Dns.GetHostName);
或者IPAdress[] localIpGroup = Dns.GetHostAddress("");默认返回本主机的IP地址
同样 获得的IP地址需要进行IPV4或者IPV6的区分
当然 如果一台设备同时连接到多个网络(比如有线和无线同时连接)时,可能会有多个IPV4的本地IP,此时需要根据自己的实际情况进行筛选。