.NET 获取网络连接状态的方法

TOC

使用 `My` 命名空间

在 Visual Basic.NET 中,可以使用My.Computer.Network.IsAvailable 来获取网络是否已经连接。此函数的定义如下所示:

        '''**********************************************************************
        ''';IsAvailable
        ''' <summary>
        '''  Indicates whether or not the local machine is connected to an IP network.
        ''' </summary>
        ''' <value>True if connected, otherwise False</value>
        ''' <remarks></remarks>
        Public ReadOnly Property IsAvailable() As Boolean
            Get

                Return NetInfoAlias.NetworkInterface.GetIsNetworkAvailable()

            End Get
        End Property

由此引入了C#中获取网络状态的方法。

使用 `NetworkInterface` 类

可以使用`System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable`静态函数来获取是否具有可用的网络连接。

此函数在MSDN原文中描述如下:

如果有任何网络接口标记为“up”而且不是环回或隧道接口,则认为有可用的网络连接。

使用`InternetGetConnectedState`函数

在Wininet.dll中公开了一个函数,用于获取当前的网络连接状态。其具体用法请参阅InternetGetConnectedState function。函数的定义如下:

BOOL InternetGetConnectedState(
  _Out_  LPDWORD lpdwFlags,
  _In_   DWORD dwReserved
);

其返回值如果非零,则表示存在活动的网络连接。如果使用C#导入此函数,则可以编写如下的控制台程序,用以检测网络状态:

using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication2
{
    class Program
    {
        [Flags]
        public enum INTERNET_CONNECTION : int
        {
            MODEM = 0x01,
            LAN = 0x02,
            PROXY = 0x04,
            MODEM_BUSY = 0x08,
            RAS_INSTALLED = 0x10,
            OFFLINE = 0x20,
            CONFIGURED = 0x40,
        }

        [DllImport("winInet")]
        private static extern bool InternetGetConnectedState(out INTERNET_CONNECTION dwFlag, int dwReserved);

        static void Main(string[] args)
        {
            INTERNET_CONNECTION flag;
            if (InternetGetConnectedState(out flag, 0))
                Console.WriteLine("网络已经连接:{0}。", flag);
            else
                Console.WriteLine("网络尚未连接。");
        }
    }
}

使用 Ping 测试与指定站点的连通性

可以通过 ping 测试与指定站点的连通性来判断是否联网。使用此方法的优点在于,如果测试结果表明网络是连通的,那么网络肯定是连通的。

可以使用 `System.Net.NetworkInformation.Ping` 类进行 ping 测试。具体方法此处不再赘述。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Content is available under CC BY-SA 3.0 unless otherwise noted.