下面是针对“C#获取本地IP的四种方式示例详解”的完整攻略。
1. 前言
有时我们需要获取本地机器的IP地址。但是,如果我们不知道如何获取IP地址,就无法对本地IP进行任何操作。在本教程中,我们将学习使用C#编程语言获取本地IP地址的4个方法。
2. 方法一 [GetHostName]
以下是使用C#语言获取本地IP地址的第一个例子:
string myHost = System.Net.Dns.GetHostName();
IPHostEntry myIPs = System.Net.Dns.GetHostEntry(myHost);
foreach (IPAddress myIP in myIPs.AddressList)
{
Console.WriteLine(myIP.ToString());
}
在上述代码片段中,我们首先使用System.Net.Dns.GetHostName()
获取了本地机器的主机名,然后使用System.Net.Dns.GetHostEntry()
方法来获取关联的IP地址。最后,我们使用 foreach
循环迭代 AddressList
集合,将其转换为字符串并打印到控制台。
3. 方法二 [GetHostAddresses]
第二种方法使用了GetHostAddresses
函数,与前面的代码相比,此方法更加简洁。以下是代码:
string name = Dns.GetHostName();
IPAddress[] addressList = Dns.GetHostAddresses(name);
foreach (IPAddress address in addressList)
{
Console.WriteLine(address.ToString());
}
在上述代码片段中,我们使用Dns.GetHostName()
获取本地机器的主机名,并将其存储在变量name
中。接下来,我们使用Dns.GetHostAddresses()
方法来获取IP地址,该方法使用步骤与前面的方法相同。最后,我们使用 foreach
循环迭代“AddressList”数组,并将其转换为字符串并打印到控制台。
4. 方法三 [LocalIPAddress]
下面我们将介绍一种使用NetworkInterface
类的第三种方法,该方法使用LocalIPAddress()
函数来获取本地IP地址,代码如下:
public static string GetLocalIPAddress()
{
var netInterfaces = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault
(n => n.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
n.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
if (netInterfaces == null)
return string.Empty;
var address = netInterfaces.GetIPProperties().UnicastAddresses.FirstOrDefault
(u => u.Address.AddressFamily == AddressFamily.InterNetwork);
return address?.Address.ToString();
}
在本方法中,我们首先使用NetworkInterface.GetAllNetworkInterfaces()
方法来获取本地机器的所有网络接口,然后使用FirstOrDefault
函数来获取指定网络接口类型的第一个接口(在此示例中为Wireless 802.11
或Ethernet
)。然后,我们使用GetIPProperties()
方法来获取IP属性(如网关地址),然后使用FirstOrDefault
函数获取第一个IPv4地址。最后,我们将获取到的IPv4地址转换为字符串并返回。
5. 方法四 [System.Net.Sockets.TcpClient]
最后,我们将介绍使用System.Net.Sockets.TcpClient
类的第四种方法。以下是代码示例:
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
break;
}
}
在此方法中,我们使用Dns.GetHostEntry(Dns.GetHostName())
方法来获取主机名,并将其存储在变量host
中。接下来,我们使用foreach
循环迭代“AddressList”数组,使用if
语句检查IP地址的类型是否为InterNetwork
。在循环完成后,我们将获取到的IP地址转换为字符串并将其存储在变量localIP
中。
6. 结论
以上是获取本地IP地址的四种方法示例。无论您选择哪种方法,都需要根据自己的特定应用场景选择适当的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#获取本地IP的四种方式示例详解 - Python技术站