验证可用网络连接的最简单方法是什么?

G-.*_*G-. 9 .net c# networking .net-2.0

我是c#/ .net开发的新手,但我已经为我公司的一小部分资产组建了一个股票跟踪应用程序.我还设置了它在SQL 2000中连接的数据库.

当网络连接可用时,它目前工作得非常出色,但是当我远离连接时,我想扩展它以供使用.

首先,我需要知道是否有可用的连接.所以我把它放在一起:

    private int availableNetAdapters()
    {
        int nicCount = 0;
        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (nic.OperationalStatus == OperationalStatus.Up)
            {
                nicCount++;
            }
        }

        return nicCount;
    }
Run Code Online (Sandbox Code Playgroud)

似乎工作,但我必须测试"> 1",因为无论其他适配器状态如何,始终检测到"MS TCP环回接口".

是否有更好/更简单的方法来检查连接?

G

Luk*_*uke 9

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

您还可以使用事件NetworkAvailabilityChangedNetworkAddressChanged该类来监视IP地址和网络可用性更改.

编辑:请注意,此方法会检查计算机上可能存在的所有可用网络接口(无线,LAN等).如果其中任何一个连接,它将返回true.

  • 如果我错了,请纠正我,但是这也不会列举蓝牙吗?这似乎是一个不理想的结果. (2认同)

Joe*_*orn 8

还有一些事情要记住:

  • Avaialable网络连接!=可用的互联网连接.
  • Internet Access!=访问特定网站(想想代理过滤器,或者网站可能只是关闭)

因此,通常最好直接测试对所需特定资源的访问.

这些资源不稳定; 无论如何,你必须处理异常.因此,通常最好只获得一个资源,就好像你确定它存在并将开发时间放在一起,以确保你的异常处理程序能够很好地处理失败.