在C#中,可以使用System.Net.NetworkInformation命名空间下的NetworkInterface类来获取和管理本地计算机上的网络适配器。以下是使用C#获取网络适配器IP地址的代码示例:
```csharp
using System;
using System.Net.NetworkInformation;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// 获取所有网络适配器
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
// 如果适配器支持IPv4并且不是虚拟适配器
if (adapter.Supports(NetworkInterfaceComponent.IPv4) && !adapter.Description.Contains("Virtual"))
{
// 获取IP属性
IPInterfaceProperties ipProperties = adapter.GetIPProperties();
// 获取IPv4地址集
UnicastIPAddressInformationCollection addresses = ipProperties.UnicastAddresses;
foreach (UnicastIPAddressInformation address in addresses)
{
// 如果该地址是IPv4并且不是环回地址,则打印它
if (address.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork && !IPAddress.IsLoopback(address.Address))
{
Console.WriteLine("IP地址: " + address.Address.ToString());
}
}
}
}
Console.ReadKey();
}
}
}
```
1、获取本机局域网内IP地址:
如果本机在局域网内,直接调用上面的方法即可,以ipv4为例:
List<string> ipv4_ips = GetLocalIpAddress("InterNetwork");
如果本机只有一个网卡,且没有安装虚拟网卡,那么ipv4_ips里应该只有一条数据,即局域网内地址;
2、获取本机的公网IP地址:
1)、如果本机是拨号上网的或具有独立公网IP的情况下,使用上面的方法即可,以ipv4为例:
List<string> ipv4_ips = GetLocalIpAddress("InterNetwork");
如果本机只有一个网卡,且没有安装虚拟网卡,那么ipv4_ips里应该只有一条数据,即公网IP地址;
2)、如果是路由上网的,想获取网关的外网IP,只能通过访问一些公网的地址来获取外网IP了;
这里我们首先获取所有适配器,并遍历这些适配器以确定哪些适配器支持IPv4且不是虚拟适配器。然后,我们获取每个适配器的IP属性,并从中提取IPv4地址集。最后,我们遍历每个IPv4地址,并检查该地址是否是IPv4并且不是回送地址。如果是,我们就可以通过调用Address属性来获取该地址的字符串表示形式。
如果喜欢我的文章,那么
“在看”和转发是对我最大的支持!