C#中判断本地系统的网络连接状态的方法

 更新时间:2013年10月09日 16:49:37   作者:  
C#中一般通过InternetGetConnectedState函数返回本地系统的网络连接状态,下面简单介绍下,需要的朋友可以参考下

函数InternetGetConnectedState返回本地系统的网络连接状态。

语法:

BOOL InternetGetConnectedState(
__out LPDWORD lpdwFlags,
__in DWORD dwReserved
);
 
参数:
lpdwFlags[out]
指向一个变量,该变量接收连接描述内容。该参数在函数返回FLASE时仍可以返回一个有效的标记。该参数可以为下列值的一个或多个。
含义
INTERNET_CONNECTION_CONFIGURED0x40
Local system has a valid connection to the Internet, but it might or might not be currently connected.
INTERNET_CONNECTION_LAN 0x02
Local system uses a local area network to connect to the Internet.
INTERNET_CONNECTION_MODEM0x01
Local system uses a modem to connect to the Internet.
INTERNET_CONNECTION_MODEM_BUSY0x08
No longer used.
INTERNET_CONNECTION_OFFLINE 0x20
Local system is in offline mode.
INTERNET_CONNECTION_PROXY0x04
Local system uses a proxy server to connect to the Internet.
INTERNET_RAS_INSTALLED0x10
Local system has RAS installed.
dwReserved[in]
保留值。必须为0。
 
返回值:
当存在一个modem或一个LAN连接时,返回TRUE,当不存在internet连接或所有的连接当前未被激活时,返回false。
当该函数返回false时,程序可以调用GetLastError来接收错误代码。
 
示例:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        private const int INTERNET_CONNECTION_MODEM = 1;

        private const int INTERNET_CONNECTION_LAN = 2;

        private const int INTERNET_CONNECTION_PROXY = 4;

        private const int INTERNET_CONNECTION_MODEM_BUSY = 8;

        [DllImport("winInet.dll ")]

        //声明外部的函数:

        private static extern bool InternetGetConnectedState(
            ref  int Flag,
            int dwReserved
        );

        static void Main(string[] args)
        {
            int Flag = 0;

            string netStates = "";

            if (!InternetGetConnectedState(ref Flag, 0))
            {
                Console.WriteLine("no!");
            }
            else
            {

                if ((Flag & INTERNET_CONNECTION_MODEM) != 0)

                    netStates += " Connect by MODEM /n";

                if ((Flag & INTERNET_CONNECTION_LAN) != 0)

                    netStates += "Connect by LAN  /n";

                if ((Flag & INTERNET_CONNECTION_PROXY) != 0)

                    netStates += "Connect by PROXY /n";

                if ((Flag & INTERNET_CONNECTION_MODEM_BUSY) != 0)

                    netStates += " MODEM is busy  /n";

            }

            Console.WriteLine(netStates);
            Console.ReadLine();
        }
    }
}


截图:

相关文章

  • C#请求唯一性校验支持高并发的实现方法

    C#请求唯一性校验支持高并发的实现方法

    这篇文章主要给大家介绍了关于C#请求唯一性校验支持高并发的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • C#创建一个可快速重复使用的项目模板(详细过程)

    C#创建一个可快速重复使用的项目模板(详细过程)

    这篇文章主要介绍了C#如何创建一个可快速重复使用的项目模板今天给大家介绍的是基于官方的cli donet new 命令创建自己的项目模板,需要的朋友可以参考下
    2024-06-06
  • WPF MVVM制作发送短信小按钮

    WPF MVVM制作发送短信小按钮

    这篇文章主要为大家详细介绍了WPF MVVM发送短信小按钮的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • c#使用windows服务更新站点地图的详细示例

    c#使用windows服务更新站点地图的详细示例

    这篇文章主要介绍了c#使用windows服务更新站点地图的详细示例,需要的朋友可以参考下
    2014-04-04
  • C#使用异步流高效处理序列数据的方法详解

    C#使用异步流高效处理序列数据的方法详解

    C#中的异步流(Async Streams),异步流是C# 8.0引入的一个新特性,它允许你异步地处理序列数据,非常适合处理大量数据或长时间运行的任务,本文给大家介绍了C#使用异步流高效处理序列数据的方法步骤,需要的朋友可以参考下
    2024-11-11
  • c# 委托的本质是什么

    c# 委托的本质是什么

    这篇文章主要介绍了c# 委托的本质是什么,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C# 字典Dictionary的具体用法

    C# 字典Dictionary的具体用法

    本文主要介绍了C# 字典Dictionary的具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C#实现获取MAC地址的方法

    C#实现获取MAC地址的方法

    这篇文章主要介绍了C#实现获取MAC地址的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#二进制序列化实例分析

    C#二进制序列化实例分析

    这篇文章主要介绍了C#二进制序列化,实例分析了C#二进制序列化的方法,代码中有较为详尽的注释说明,便于理解,需要的朋友可以参考下
    2015-05-05
  • C# 对文件与文件夹的操作包括删除、移动与复制

    C# 对文件与文件夹的操作包括删除、移动与复制

    在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类,本文将详细介绍,需要的朋友可以参考
    2012-11-11

最新评论