using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
namespace NetWork
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
            NetworkChange.NetworkAddressChanged+=new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
        }
        public void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface n in adapters)
            {
                if(n.NetworkInterfaceType!= NetworkInterfaceType.Loopback)
                    Console.WriteLine("Changed   {0} is {1}", n.Name, n.OperationalStatus);
            }
            Console.WriteLine("NetState  :  " + NetState());
        }
        public void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
        {            
            Console.WriteLine("IsAvailable  :  "+e.IsAvailable);
            Console.WriteLine("NetState  :  " + NetState());
            
        }

[DllImport("wininet.dll")]
        public static extern bool InternetGetConnectedState(out long lpdwFlags, long dwReserved);

public static bool NetState()
        {
            //string url = http://www.baidu.com/;
            //if (url.StartsWith("http://")) url = url.Remove(0, "http://".length/);
            //try
            //{
            //    System.Net.IPHostEntry ipHost = System.Net.Dns.GetHostEntry(url);// System.Net.Dns.Resolve(url);
            //    return true;
            //}
            //catch //(System.Net.Sockets.SocketException se)
            //{
            //    //System.Diagnostics.Trace.Write(se.Message);
            //    return false;
            //}
            try
            {
                long lfag;
                if (InternetGetConnectedState(out lfag, 0))
                {                   
                    return true;   
                }
                return false;
            }
            catch
            {
                return false;
            }
        }

}
}

 
 
 
好文要顶 

实时检测网络状态及是否可以连接Internet的更多相关文章

  1. iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态

    一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...

  2. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  3. [iOS 多线程 & 网络 - 2.8] - 检测网络状态

    A.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 ...

  4. iOS 检测网络状态 自动判断 认为提示网络改变

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无能)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验WIFI\3G ...

  5. linux c 检测网络状态

    转自:http://stackoverflow.com/questions/808560/how-to-detect-the-physical-connected-state-of-a-network ...

  6. iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

    本文转载至 http://blog.csdn.net/wangzi11322/article/details/45580917 检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 ...

  7. iOS实时监控网络状态的改变

    在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体 ...

  8. iOS网络4——Reachability检测网络状态

    一.整体介绍 前面已经介绍了网络访问的NSURLSession.NSURLConnection,还有网页加载有关的webview,基本满足通常的网络相关的开发. 其实在网络开发中还有比较常用的就是网络 ...

  9. iOS 检测网络状态

    一般有两种方式,都是第三方的框架,轮子嘛,能用就先用着,后面再优化. 一:Reachability 1.首先在AppDelegate.h添加头文件"Reachability.h", ...

随机推荐

  1. linux常用命令-3文件与目录相关命令

    cd .. #返回上一级目录 cd ../.. #返回上两级目录 cd - #返回上次所在目录 cp file1 file2 #将file1复制为file2 cp -a dir1 dir2 #复制一个 ...

  2. linux 下安装mysql5.7.17

    安装前的环境准备 linux 环境准备 内核参数建议值 1.调整最大文件数限制 直接执行 ulimit -n 65535 或写入/etc/sysctl.conf  重启后生效 2.修改IO 调度器设置 ...

  3. qt创建无qt工程

    qt创建无qt工程,cmake . eclipse 编写makefile  代码

  4. pandas-append()

    DataFrame.append(self,other,ignore_index = False,verify_integrity = False,sort = Nore) 作用是将其他对象附加到调用 ...

  5. vue-cli 4058错误

    vue搭建项目 执行命令 npm install -g vue-cli   出现错误 4058 1.按照文章http://www.jb51.net/article/126221.htm操作没有效果 2 ...

  6. HTTP状态码及请求头

    状态码 状态码告知从服务器端返回的请求结果 一般可分为5个大类 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) ...

  7. Dart编程循环

    有时,某些指令需要重复执行.循环是一种理想的方法.循环表示必须重复的一组指令.在循环的上下文中,重复被称为迭代 . 下图说明了循环的分类 让我们开始讨论确定循环.迭代次数是确定/固定的循环称为确定循环 ...

  8. spring mvc hibernate spring 整合的增删改查+后台校验+bootstrap

    整合之前先知道大概的思路,首先要知道每个框架的重点要点. 1.首先我们从数据库开始 --创建数据库 create database gs --创建表 create table food ( id ,) ...

  9. Sublime 安装、删除插件

    安装 按 Ctrl + Shift + P 输入Install Package 输入 要安装的插件名称,enter即可 删除 按 Ctrl + Shift + P 输入Remove Package 选 ...

  10. Greenplum(PostgreSql)使用 with recursive 实现树形结构递归查询并插入新表

    本代码目的是替代Oracle的connect by语句,并实现后者的path和idleaf功能. 正文开始: 假设表org,字段有 id(编号),name(名称),pid(上级编号), 最上级的记录p ...