«

C#检查网线是否插好,网卡是否启用

hujiato 发布于 阅读:122 编程


using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;

public class NetworkStatusChecker
{
    public static void CheckNetworkStatus()
    {
        var interfaces = NetworkInterface.GetAllNetworkInterfaces();
        bool foundActiveEthernet = false;

        foreach (var ni in interfaces)
        {
            // 跳过非物理网卡(如环回、隧道等)
            if (ni.NetworkInterfaceType == NetworkInterfaceType.Loopback || 
                ni.NetworkInterfaceType == NetworkInterfaceType.Tunnel) 
                continue;

            // 检查网卡是否启用(非禁用状态)
            bool isEnabled = ni.OperationalStatus == OperationalStatus.Up;

            // 检查物理连接状态(仅对有线网卡有效)
            bool isCableConnected = false;
            if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet ||
                ni.NetworkInterfaceType == NetworkInterfaceType.GigabitEthernet)
            {
                isCableConnected = isEnabled && 
                                   ni.GetPhysicalAddress().GetAddressBytes().Length > 0;
            }

            Console.WriteLine($"网卡: {ni.Name}");
            Console.WriteLine($"类型: {ni.NetworkInterfaceType}");
            Console.WriteLine($"状态: {(isEnabled ? "已启用" : "已禁用")}");
            Console.WriteLine($"网线状态: {(isCableConnected ? "已连接" : "未连接/未知")}");
            Console.WriteLine(new string('-', 50));

            // 检测到活动的以太网连接
            if (isEnabled && isCableConnected) 
                foundActiveEthernet = true;
        }

        Console.WriteLine("n网络状态摘要:");
        Console.WriteLine(foundActiveEthernet 
            ? "✅ 检测到活动的以太网连接" 
            : "❌ 未检测到有效的以太网连接");
    }

    public static void Main()
    {
        CheckNetworkStatus();
    }
}

C# 编程

文章目录