一、初识获取本机ip
在许多网络应用程序中,获取本机的IP地址是一个关键任务。通过C#,我们可以方便地获取本地系统IP地址。
首先我们需要在C#中引入System.Net命名空间。然后,使用Dns类的GetHostName方法获取主机名,最后使用GetHostEntry方法返回相应IP地址。
using System.Net; IPHostEntry hostname = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ip in hostname.AddressList) { Console.WriteLine(ip); }
二、获取多个本机ip地址
如果本机有多个网卡或子网,我们需要获取所有的IP地址以便做出决策。可以通过枚举网络接口来完成。
首先,引入System.Net.NetworkInformation命名空间。然后,通过NetworkInterface类的GetIPProperties方法获取IP地址和网关信息。最后,获取IPv4地址列表。
using System.Net.NetworkInformation; IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in interfaces) { IPInterfaceProperties adapterProperties = adapter.GetIPProperties(); foreach (UnicastIPAddressInformation address in adapterProperties.UnicastAddresses) { if (address.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { Console.WriteLine(address.Address); } } }
三、获取特定类型的本机ip地址
有时候我们只需要特定类型的IP地址,例如私有IP地址、公共IP地址、IPv4地址等。
要获取私有IP地址(如192.168.x.x或10.x.x.x),我们可以使用以下代码:
using System.Net; using System.Net.NetworkInformation; foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { IPInterfaceProperties properties = ni.GetIPProperties(); foreach (IPAddressInformation unicast in properties.UnicastAddresses) { if (unicast.Address.AddressFamily == AddressFamily.InterNetwork && IPAddress.IsPrivate(unicast.Address)) { Console.WriteLine(unicast.Address); } } }
要获取公共IP地址,我们可以使用以下代码:
using System.Net; using System.Net.Sockets; IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { if (!IPAddress.IsPrivate(ip)) { Console.WriteLine(ip); } } }
要获取IPv4地址,我们可以使用以下代码:
using System.Net; using System.Net.NetworkInformation; foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { IPInterfaceProperties properties = ni.GetIPProperties(); foreach (IPAddressInformation unicast in properties.UnicastAddresses) { if (unicast.Address.AddressFamily == AddressFamily.InterNetwork) { Console.WriteLine(unicast.Address); } } }
四、总结
在本文中,我们学习了在C#中获取本机IP地址的多种方法,包括获取主机名、获取多个IP地址、获取特定类型的IP地址。希望这些示例代码能够帮助您解决与本地IP地址相关的问题。