`
浮生长恨
  • 浏览: 212843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ios开发 检测是否连接网络代码

阅读更多
1,先导入SystemConfiguration.framework

2, #import<SystemConfiguration/SystemConfiguration.h>
   #import<netdb.h>

3, 源代码如下:
- (BOOL) connectedToNetWork
{
    //创建零地址,0.0.0.0的地址表示查询本机的网络连接状态
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;
    
    /**
     * SCNetworkReachabilityRef: 用来保存创建测试连接返回的引用
     * 
     * SCNetworkReachabilityCreateWithAddress: 根据传入的地址测试连接.
     * 第一个参数可以为NULL或kCFAllocatorDefault
     * 第二个参数为需要测试连接的IP地址,当为0.0.0.0时则可以查询本机的网络连接状态
     * 同时返回一个引用必须在用完后释放
     * PS: SCNetworkReachabilityCreateWithName: 这是个根据传入的网络测试连接,
     * 第二个参数比如为“www.apple.com”,其他和上一个一样
     *
     * SCNetworkReachabilityGetFlags:这个函数用来获得测试连接的状态,
     * 第一个参数为之前建立的测试连接的引用,
     * 第二个参数用来保存获得的状态,
     * 如果能获得状态则返回TRUE,否则返回FALSE。
     * 
     */
    
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;
    
    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);
    
    if (!didRetrieveFlags) {
        printf("Error. Could not recover network reachability flags");
        return NO;
    }
    
    /**
     *  kSCNetworkReachabilityFlagsReachable: 能够连接网络
     *  kSCNetworkReachabilityFlagsConnectionRequired: 能够连接网络,但是首先得建立连接过程
     *  kSCNetworkReachabilityFlagsIsWWAN: 判断是否通过蜂窝网覆盖的连接,
     *  比如EDGE,GPRS或者目前的3G.主要是区别通过WiFi的连接
     */
    BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0);
    BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);
    
    return (isReachable && !needsConnection) ? YES : NO;
}


当然,可以使用每秒检测一次
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(testWeb) userInfo:nil repeats:YES];

-(void)testWeb{
    NSString *result;
    if ([self connectedToNetWork]) {
        result = @"Connection Successed!!!";
    }else {
        result = @"Connection Faild!!!";
    }
    NSLog(@"result:%@",result);

}
分享到:
评论

相关推荐

    iOS开发之一句代码检测App版本的更新

    在iOS应用开发中,定期检测并提示用户更新App版本是保持应用活跃度和用户...总的来说,通过一句代码实现的版本检测和更新跳转是iOS开发中的一个实用技巧,它能帮助开发者有效地提醒用户升级应用,保持应用的最新状态。

    iOS外设检测(外部设备连接)

    标题"iOS外设检测(外部设备连接)"直指这一领域的核心任务——检测并确认外部设备是否已成功连接到iOS设备。这种连接可以用于各种场景,如游戏控制器、健康监测设备、数据传输设备等。 首先,iOS对外设的支持基于MFi...

    iOS网络连接状态判断 JPNetwork

    在iOS应用开发中,了解设备的网络连接状态是至关重要的,因为这直接影响到应用程序的数据获取、更新和用户体验。"iOS网络连接状态判断 JPNetwork"是一个简单而实用的库,它帮助开发者轻松地检测iOS设备的网络连接...

    iOS设备检测wifi或者3G状态的代码

    在iOS开发中,为了提供更好的用户体验,经常需要检测设备当前的网络状态,比如是否连接了WiFi或3G网络。这通常涉及到系统网络可达性(Reachability)的检测。本篇文章将详细讲解如何使用 Reachability 框架来实现这...

    iOS计算器开发源码

    iOS开发广泛采用MVC模式,将数据模型、视图展示和控制器逻辑分离。在这个计算器应用中,Model负责计算逻辑,View负责显示结果,Controller处理用户输入与Model之间的交互。 4. **响应式编程**: 在iOS中,UIKit...

    斯坦福大学iOS应用开发课件的源码

    通过分析提供的源代码,你可以了解到iOS开发的实践技巧和最佳实践。 1. **Swift编程语言**:Swift是Apple为iOS、macOS、watchOS和tvOS开发的现代编程语言。它的语法简洁易懂,同时具有安全性高和性能强大的特点。...

    ios开发详细教程, ios代码大全, 苹果系统(ios)架构教程. 附超详细iod学习路径图

    ### iOS开发详细教程 #### 一、iOS基础知识 **1.1 iOS系统概述** iOS是苹果公司为iPhone、iPad和iPod Touch等设备设计的操作系统。它基于macOS,但进行了大量的定制化处理,以便更好地适应移动设备。iOS的核心...

    iOS 开发工具包

    1. **Xcode**: Xcode是Apple官方提供的iOS开发集成开发环境(IDE),它包括代码编辑器、调试器、模拟器和版本控制系统等。开发者可以使用Swift或Objective-C编写iOS应用。Xcode还支持Interface Builder,用于设计...

    iOS 判断当前是否有网络

    在iOS开发中,确保应用程序能够实时检测和处理网络状态是一项重要的任务。用户可能在任何时间、任何地点使用应用,因此程序需要能够灵活地应对网络连接的变化。标题"iOS 判断当前是否有网络"以及描述"判断是否存在...

    ios开发的图书管理系统

    Reachability框架可以帮助检测网络连接状态,以便适时提醒用户或调整应用行为。 第五,权限管理是iOS开发中不可忽视的部分。例如,如果系统需要访问用户的图书购买记录或iCloud存储,需要请求相应的权限,如...

    IOS网络连接状态检测

    在iOS开发中,确保应用程序能够适应不同的网络环境是至关重要的。"IOS网络连接状态检测"这一主题主要关注如何在iOS设备上检测应用所处的网络条件,如WiFi、2G、3G、4G等。这涉及到对网络状态的实时监控,以便在不同...

    移动应用开发-iOS开发示例教程之网络检测.zip

    在iOS开发中,网络检测是不可或缺的一部分,尤其是在构建移动应用时。这个教程将带你深入了解如何在iOS应用中实现网络状态的检测与管理。网络检测能够确保应用在无网络连接时提供恰当的用户体验,同时在有网络时能...

    iOS 代码的规范

    Objective-C作为iOS开发的重要语言,对于其代码规范的理解和应用尤为重要。 首先,Objective-C编程艺术的章节1至6部分介绍了代码中需要特别注意的几个方面: 1. 初始化和销毁:在Objective-C中,类的初始化通常...

    iOS 异步长连接AsuncSocket

    在iOS开发中,异步长连接(Asynchronous Socket)是一种重要的网络通信技术,它使得应用程序可以在不影响用户界面响应的情况下进行后台数据传输。本教程将详细讲解如何使用AsyncSocket库实现iOS上的异步长连接功能。...

    ios网络高级编程源代码

    在iOS开发中,网络编程是不可或缺的一部分,它涉及到应用程序如何通过互联网与其他设备或服务进行交互。本书的源代码包含了一系列的示例项目,这些项目展示了如何使用苹果的Foundation框架和CFNetwork框架来实现HTTP...

    ios检测是否存在网络

    在iOS开发中,确保应用程序能够正确检测网络状态是至关重要的,因为很多功能和服务依赖于网络连接。本示例(testNet)将展示如何在iOS应用中检查设备是否存在网络连接,以便在无网络时做出相应的处理。以下是实现这...

    unity 开发ios应用

    ### Unity 开发 iOS 应用知识点详解 #### 一、Unity3D 游戏引擎简介与安装 **Unity3D** 是一款强大的跨平台游戏开发引擎,被广泛应用于游戏开发、虚拟现实(VR)、增强现实(AR)以及交互式3D内容的创建等多个领域...

    ios 版本蓝牙测试代码

    "ios 版本蓝牙测试代码"是针对这个领域的实践代码示例,用于搜索并连接支持蓝牙4.0的设备,例如健康追踪器,例如文件名"Heart Rate"可能就代表一个心率监测设备的模拟数据。 首先,我们需要理解iOS中的Core ...

    iOS外设接口(充电口)配件连接检测

    本教程将深入探讨如何开发与iOS设备通过充电口连接的配件,并进行有效的连接检测。 首先,我们要了解Apple的MFi(Made for iPhone/iPod/iPad)计划。这是Apple为了规范第三方配件制造商推出的标准,要求所有想要...

    xcode配置iOS 11.0 beta开发包

    在开始开发之前,务必检查你的代码和第三方库是否与iOS 11.0兼容。新版本的iOS可能会引入API变动,一些旧的API可能会被弃用或移除。使用Xcode的代码审计工具(Code Audit)来查找可能的问题。 5. **测试**: 使用...

Global site tag (gtag.js) - Google Analytics