Reachability(判断网络是否连接)

2023-11-07

类似于一个网络状况的探针。

  [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
    
    hostReach = [[Reachability reachabilityWithHostName: @"hubj.cnblogs.com"] retain];
    [hostReach startNotifier];
    
    wifiReach=[[Reachability reachabilityForLocalWiFi]retain];
    [wifiReach startNotifier];

 

- (void)reachabilityChanged: (NSNotification* )note {
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
    
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
    
    switch (netStatus)
    {
        case NotReachable:
        {
            NSLog(@"Access Not Available");
            break;
        }
            
        case ReachableViaWWAN:
        {
            NSLog(@"Reachable WWAN");
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"Reachable WiFi");
            break;
        }
    }

}

 

判断网络是否连接

/***
* 此函数用来判断是否网络连接服务器正常
* 需要导入Reachability类
*/
+ (BOOL)isExistenceNetwork
{
    BOOL isExistenceNetwork;
    Reachability *reachability = [Reachability reachabilityWithHostName:@""];  // 测试服务器状态
    
     switch([reachability currentReachabilityStatus]) {
            case NotReachable:
                  isExistenceNetwork = FALSE;
                  break;
             case ReachableViaWWAN:
                   isExistenceNetwork = TRUE;
                   break;
              case ReachableViaWiFi:
                    isExistenceNetwork = TRUE;
                    break;
     }
     return  isExistenceNetwork;
}

 

实时通知网络状况

/*
* 在应用委托的方法didFinishLaunchingWithOptions中添加
*/

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
reachability = [[Reachability reachabilityWithHostName:@"www.baidu.com"] retain];
[reachability startNotifier];
........
return YES;

/**
*此函数通过判断联网方式,通知给用户
*/
- (void)reachabilityChanged:(NSNotification *)notification
{
      Reachability *curReachability = [notification object];
      NSParameterAssert([curReachability isKindOfClass:[Reachability class]]);
      NetworkStatus curStatus = [curReachability currentReachabilityStatus];
      if(curStatus == NotReachable) {
          [DOIN_Util logFax:@"连接失败"];
      }
}



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Reachability(判断网络是否连接) 的相关文章

随机推荐

  • 【画方】画方网络准入管理系统

    一 DHCP Server与DHCP准入方式 NAM内置了一个DHCP服务器 它与其它模块配合来提供DHCP准入控制功能 这个服务器与标准DHCP服务器有很大区别 它不仅利用DHCP协议实现了IP地址的中心下发功能 还利用操作系统内置的DH
  • 神经网络算法基本原理及其实现

    目录 背景知识 人工神经元模型 激活函数 网络结构 工作状态 学习方式 BP算法原理 算法实现 MATLAB 背景知识 在我们人体内的神经元的基本结构 相信大家并不陌生 看完下面这张图 相信大家都能懂 什么是人工神经网络 人工神经网络是具有
  • 《软件调试艺术》读后感七

    1 线程调试 对线程的调试用的最多的可能是thread命令了 查看程序中有多少线程使用Infothreads 进入到某个线程的内部使用thread count 这样就可以进入到count线程的内部 线程调试中用的最多的还有就是bt命令 这个
  • Python 数据分析1:三种工具实现连接、读取MySQL数据库并处理MySQL数据为DataFrame

    文章目录 一 前言 二 通过 pymysql 获取 MySQL 数据 2 1 连接数据库 2 2 读取数据 2 3 处理数据 三 通过 mysqlclient 获取 MySQL 数据 四 通过 SQLAlchemy 获取 MySQL 数据
  • protobuf-IOS简单总结(编译、环境搭建)

    什么是protobuf Protocol Buffers are a way of encoding structured data in an efficient yet extensible format Google uses Pro
  • 用Vue的三种方法实现加减乘除运算

    js插件 vue js 教程 首先在工具内引入vue js 然后在body里面创建一个div并设置id 我这里给id命名为 app div 在id命名为 app 的div内使用input标签和select标签来设置运算框 第一种comput
  • 多个接口请求出现报错,提示会连续出现多个,如何只弹出一个提示

    场景 如果出现网络问题或者token失效 刷新页面 如果有多个接口请求就会出现报错 那么提示就会连续弹出几个 如图 使用的是vue element ui 解决方法 重写一了个message import Message from eleme
  • 爬虫实例九 豆瓣电影详情信息

    from bs4 import BeautifulSoup 网页解析 获取数据 import re 正则提取 import urllib request urllib error 制定url 获取网页数据 import xlwt 进行exc
  • TensorFlow的GPU版本安装

    建议可以使用anaconda创建专门的虚拟环境来安装TensorFlow 因为如果你之后继续在此环境下安装如tensorflow federated 联邦机器学习 的话就会出问题 1 版本准备 注意四个版本是一一对应的 可能改变任何一个的版
  • 程序猿面试必背——Java资料整理

    程序猿面试必背 适用于 Java开发工程师 后台开发工程师 软件开发工程师 写在前面 秋招已结束 以下是对我帮助比较大的资料 分享一下 可能涉及到的知识点 编程语言 Java 基础知识 计算机网络 操作系统 linux 数据库 关系型如my
  • git bash 风格调整

    在用户目录下有一个 C Users minttyrc文件 用文本方式打开文件 将系统配置加入进去即可全局修改git bash的风格 当然也可以在git bash上右击选择options进行修改 个人配置内容如下 参考 Font Consol
  • 创建基于vite的vue项目

    目录 一 环境 安装Node js 安装yarn工具 二 创建项目 三 项目目录梳理 项目初始目录结构 项目加载过程 四 集成UI组件库vant 配置按需加载Vant 使用组件 引入函数组件的样式 五 集成UI组件库NutUI 配置按需加载
  • github 如何

    链接 https www zhihu com question 20393785 answer 105370502 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 原谅我只会用命令行 还是给一个使用命令行的方
  • 详解vant组件应用于Vue2

    目录 1 安装 1 1 npm安装 1 2 CDN安装 1 3 利用脚手架安装 1 3 1 安装脚手架 没有安装脚手架的 1 3 2 利用脚手架创建程序 1 3 3 使用vue ui进行依赖的安装 1 3 4 依赖安装 2 引入组件 2 1
  • express框架的基本使用

    1 引入express const express require express 2 创建应用对象 const app express 3 创建路由规则 request请求报文的封装 response响应报文的封装 app get req
  • C++的float类型数比较问题

    2020 8 17更新了一下 看到了两个float数比较的 不是0值 也加进了最末尾 相等比较 之前刷题做到一道题 看到题解很奇怪 计算一个数字的立方根 getCubeRoot double input 题解采用了二分法 但比较时并不是用直
  • 将多个HEX文件合并成一个HEX文件通过KEIL进行烧录

    首先这多个HEX文件自己已经偏移好了 hex文件已经记录了偏移的地址信息 用记事本打开第一个hex文件 test1 hex 020000040000FA 文件头记录 1000000018F09FE518F09FE518F09FE518F09
  • Docker安装以及运行第一个HelloWorld

    在安装Docker之前我们先来了解一下什么是Docker 观察Docker图标 其实很形象的解释了什么是Docker 在没有使用集装箱的情况下 我们需要考虑不同形状 尺寸的货物怎么安放 货物与货物之间是否能堆叠 这无疑是很繁琐的事情 现在有
  • 005 快排qsort库函数的用法——“C”

    文章目录 前言 一 什么是qsort快排函数 qsort的参数分析 二 使用步骤 前言 Reference C Reference cplusplus com 可在此网站查阅相关函数信息 提示 以下是本篇文章正文内容 下面案例可供参考 一
  • Reachability(判断网络是否连接)

    类似于一个网络状况的探针 NSNotificationCenter defaultCenter addObserver self selector selector reachabilityChanged name kReachabilit