C# 如何获取当前使用的网络适配器
现在,我正在尝试在我的机器上的几个网络适配器中使用网络适配器,以便获得网络适配器的ip地址、mac地址和适配器名称。但我一点运气都没有。 我找到的解决办法是。 我不认为它适用于.Net框架项目,但适用于ASP.Net核心 我的代码如下C# 如何获取当前使用的网络适配器,c#,ip-address,mac-address,C#,Ip Address,Mac Address,现在,我正在尝试在我的机器上的几个网络适配器中使用网络适配器,以便获得网络适配器的ip地址、mac地址和适配器名称。但我一点运气都没有。 我找到的解决办法是。 我不认为它适用于.Net框架项目,但适用于ASP.Net核心 我的代码如下 public void GetIpAndMacAddress() { foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { //
public void GetIpAndMacAddress()
{
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
// Only consider Ethernet network interfaces
if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
nic.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties adapterProperties = nic.GetIPProperties();
foreach (var ip in adapterProperties.UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
IPAddress = ip.Address.ToString();
}
string hexMac = nic.GetPhysicalAddress().ToString(),
regex = "(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})",
replace = "$1:$2:$3:$4:$5:$6";
IPv4InterfaceProperties p = adapterProperties.GetIPv4Properties();
netAdapterName = nic.Name;
MACAddress = Regex.Replace(hexMac, regex, replace);
return;
}
}
}
以下内容应该对您有所帮助
NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
var activeAdapter = networks.First(x=> x.NetworkInterfaceType != NetworkInterfaceType.Loopback
&& x.NetworkInterfaceType != NetworkInterfaceType.Tunnel
&& x.OperationalStatus == OperationalStatus.Up
&& x.Name.StartsWith("vEthernet") == false);
搜索的基础是消除既不是(通常用于测试)也不是(通常用于专用网络之间的安全连接)的网络适配器。操作状态确保网络接口已启动并能够传输数据包。“vEthernet”是Windows常用的命名约定,用于你说的“正在使用”是什么意思?@John_,Monica,谢谢你的兴趣,这意味着我正在使用的当前用于连接internet的网络适配器。谢谢你的回复,我会检查它并告诉你我认为这是我想要的,你能解释更多关于搜索词的内容吗?@JSGuru我已经用简短的描述更新了答案。希望这对我有所帮助。我感谢你的帮助。