C#中检查网络是否连通的二种方法

using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 //方法一
  5 using System.Runtime;
  6 using System.Runtime.InteropServices;
  7 //方法二 Net2.0新增类库
  8 using System.Net.NetworkInformation;
  9 
 10 namespace InternetCheck
 11 {
 12     public class Internet
 13     {
 14         [DllImport("wininet.dll")]
 15         private extern static bool InternetGetConnectedState(int Description, int ReservedValue);
 16 
 17         #region 方法一
 18         /// <summary>
 19         /// 用于检查网络是否可以连接互联网,true表示连接成功,false表示连接失败 
 20         /// </summary>
 21         /// <returns></returns>
 22         public static bool IsConnectInternet()
 23         {
 24             int Description = 0;
 25             return InternetGetConnectedState(Description, 0);
 26         }
 27         #endregion
 28 
 29         #region 方法二
 30         /// <summary>
 31         /// 用于检查IP地址或域名是否可以使用TCP/IP协议访问(使用Ping命令),true表示Ping成功,false表示Ping失败 
 32         /// </summary>
 33         /// <param name="strIpOrDName">输入参数,表示IP地址或域名</param>
 34         /// <returns></returns>
 35         public static bool PingIpOrDomainName(string strIpOrDName)
 36         {
 37             try
 38             {
 39                 Ping objPingSender = new Ping();
 40                 PingOptions objPinOptions = new PingOptions();
 41                 objPinOptions.DontFragment = true;
 42                 string data = "";
 43                 byte[] buffer = Encoding.UTF8.GetBytes(data);
 44                 int intTimeout = 120;
 45                 PingReply objPinReply = objPingSender.Send(strIpOrDName, intTimeout, buffer, objPinOptions);
 46                 string strInfo = objPinReply.Status.ToString();
 47                 if (strInfo == "Success")
 48                 {
 49                     return true;
 50                 }
 51                 else
 52                 {
 53                     return false;
 54                 }
 55             }
 56             catch (Exception)
 57             {
 58                 return false;
 59             }
 60         }
 61         #endregion
 62     }
 63 }

时间: 2024-12-16 15:13:44

C#中检查网络是否连通的二种方法的相关文章

Oracle 11g 安装过程中“检查网络配置要求 未执行”解决方法

正在检查网络配置要求... 检查完成.此次检查的总体结果为: 未执行 网上查了一下,很多朋友都遇到这个问题而无从下手,其实解决起来很容易的. 只需要在 Windows XP 中安装 Microsoft LoopBack Adapter[Microsoft 环回适配器]就可以了. Microsoft 环回适配器是一种可用于在虚拟网络环境中进行测试的工具,在这样的环境中无法访问网络.另外,如果存在与网络适配器或网络适配器驱动程序的冲突,则必须使用环回适配器.可以将网络客户端.协议和其他网络配置项目绑

iOS中从网络获取数据的几种方法的比较

IOS中获取网络数据一般有三种:1.NSURLCondition(已过时) 2.NSURLSession  3.三方库AFNetWorking NSURLSession 是苹果对NSULRCondition的替代品,NSURLSession比NSURLCondition多了 1.可配置的数据信息NSURLSessionConfiguration,NSURLSessionConfiguration使你可以设置你要请求的数据,通常的设置如缓存,也可以使用默认的配置信息defaultCongurati

android中获取SharedPreference对象的二种方法

我们在保存一些小量数据时,特别是一些key,value这种数据就保存在SharedPreferences中,在android获取SharedPreferences有二种方式, 1:通过Context上下文获取,ctx.getSharedPreferences 2:通过 PreferenceManager.getDefaultSharedPreferences(ctx) 但是这二种保存数据的文件名确不一样,第一种文件名是自己定义的,第二种是系统写死的,是packageName+"_preferen

网络超时检测的三种方法

作者:于老师,华清远见嵌入式学院讲师. 网络通信中,很多操作会使得进程阻塞,这时我们要设定时间,到时间后强制返回,避免进程在没有数据的情况下无限阻塞 这里我们总结一下网络超时检测的三种方法: 通过setsockopt设置套接字属性SO_RCVTIMEO struct timeval t = {5, 0}           if  (setsockopt(listenfd, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(t)) == -1) {             

在Java Web程序中使用监听器可以通过以下两种方法

之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响应,从本质上来说这些都是观察者模式的具体实现,在web程序中的监听器也不例外.在Java Web程序中使用监听器可以通过以下两种方法:通过注解@WebListener来标识一个自定义的监听器:[java] view plain copy@WebListener public class Custom

(转载)Java中如何遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Integer,

CURL模拟POST提交的二种方法实例

CURL应用广范,本文来介绍CURL模拟POST提交的二种方法实例,他们都是返回json字符串格式. 方法一(返回的是json字符串格式): /** * Curl版本 * 使用方法: * $post_string = "app=request&version=beta"; * request_by_curl('http://facebook.cn/restServer.php',$post_string); */ function actionPost($url,$data){

PHP去掉数组重复值二种方法实例

PHP两种去掉数组重复值的方法,分别使用foreach方法和array_unique方法. 去除一个数组中的重复值,可以使用foreach方法,也可以使用array_unique方法. <?php $arrF = array(); $arrS = array(); $intTotal = 100; $intRand = 10; for($i=0; $i < $intTotal; $i++) { $arrF[] = rand(1, $intRand); $arrS[] = rand(1, $in

Python文件遍历二种方法

分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历.方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames).注意,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中