`

ios 判断网络连接以及获取路由信息

    博客分类:
  • ios
 
阅读更多
首先 引入 Reachability.h 和Reachability.m文件以及#import <SystemConfiguration/CaptiveNetwork.h>
1.判断网络类型
    Reachability *r = [Reachability reachabilityWithHostName:@"www.baudu.com"];
 
    switch ([r currentReachabilityStatus]) {
            //NSString *wifiName = @"Not Found";
        case NotReachable:
            // 没有网络连接
            NSLog(@"没有网络连接");
            break;
        case ReachableViaWWAN:
            // 使用3G网络
            NSLog(@"使用3G网络");
            break;
        case ReachableViaWiFi:
            // 使用WiFi网络
            NSLog(@"使用WiFi网络");
            break;
    }


2.获取路由信息
- (NSString *)getBSSID
{
    NSDictionary *ifs = [self fetchSSIDInfo];
    NSString *bssid = [[ifs objectForKey:@"BSSID"] uppercaseString];
    NSString *bssidValue;
    if([bssid isEqualToString:@"UNSUPPORTED"]){
        NSLog(@"Simulator doesn't detect wifi, please connect your iPhone!");
        bssidValue = @"";
    }else{
        //第一位为0的时候会被省略掉
        //封装第一位为0的情况
        NSArray *array=[bssid componentsSeparatedByString:@":"];
        NSMutableArray *tempArray = [[NSMutableArray alloc]init];
        for(int i = 0; i < [array count]; i++){
            if([array[i] length]== 1){
                [tempArray addObject:[@"0" stringByAppendingString:[NSString stringWithFormat:@"%@", [array objectAtIndex:i]]]];
                
            }else{
                [tempArray addObject:[NSString stringWithFormat:@"%@", [array objectAtIndex:i]]];
            }
        }
        bssidValue = [tempArray componentsJoinedByString:@":"];
    }
    NSLog(@"bssid=%@",bssidValue);
    return bssidValue;
}

- (NSString *)getSSID
{
    NSDictionary *ifs = [self fetchSSIDInfo];
    NSString *ssid = [ifs objectForKey:@"SSID"];
    NSString *ssidValue;
    if([[ssid uppercaseString] isEqualToString:@"UNSUPPORTED"]){
        NSLog(@"Simulator doesn't detect wifi, please connect your iPhone!");
        ssidValue = @"";
    }else{
        ssidValue = ssid;
    }
    
    return ssidValue;
}

- (id)fetchSSIDInfo
{
    NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
    NSLog(@"Supported interfaces: %@", ifs);
    NSDictionary *info;
    if (!ifs) {
        info = [NSDictionary dictionaryWithObjectsAndKeys:
                @"UNSUPPORTED", @"SSID",
                @"UNSUPPORTED", @"BSSID", nil];
    } else{
        for (NSString *ifnam in ifs) {
            info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
            NSLog(@"%@ => %@", ifnam, info);
            if (info && [info count]) { break; }
        }
    }
    return info;
}

然后调用下getBSSID就可以了
分享到:
评论

相关推荐

    ios-GetIphoneMac获取iphone设备mac地址.zip

    该工程主要应用于获取苹果手机的mac地址,但前提是连接了wifi路由的情况下。原理:我们知道苹果是不允许我们获取其设备硬件的mac地址的,在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC...

    ios-wifi操作.zip

    在iOS平台上进行Wi-Fi操作涉及一系列的技术点,包括但不限于网络接口查询、Wi-Fi信息获取、网络状态检测以及性能测试。以下是对这些知识点的详细说明: 1. **Wi-Fi信息获取**: - iOS设备提供了CoreWLAN框架,用于...

    网络检查方法

    这是解决许多临时网络问题的有效方法,因为它可以刷新设备的网络设置和路由信息。如果问题仍未解决,用户可以尝试手动设置网络连接,如输入正确的DNS服务器地址,或者重置网络设置到出厂状态。 "network settings...

    网络互联实验报告.pdf

    - 了解路由器和交换机的基本功能,如路由转发、网络连接等,以及判断工作状态的方法。 - 通过Console口使用超级终端进行配置,包括设置IP地址、主机名、密码,配置日志消息,以及防止DNS解析和控制台连接中断等。 ...

    德阳市继续教育网络培训 2014年信息化建设与信息安全参考答案.docx

    文档标题和描述涉及的主题是2014年德阳市继续教育网络培训的信息化建设和信息安全相关的判断题参考答案。以下是对这些知识点的详细说明: 1. **信息技术**:信息技术主要指计算机和网络通信技术,是现代社会中信息...

    cisco网络故障

    - **信息来源**:从关键用户、网络管理系统及路由器/交换机获取相关信息。 - **识别症状**:明确指出故障的特征和表现形式。 - **重现故障**:确保故障仍然存在,以便进一步分析。 - **调查故障频率**:了解故障...

    H3C网络设备巡检报告模板.doc

    5. **设备连通性和协议状态**:检查冗余协议(如HSRP、VRRP)、VLAN、以太通道、路由协议、邻居关系、交换协议、STP协议、NAT连接状态等,确保网络通信的顺畅。 6. **机房环境检查**:包括设备运行时间、机箱温度等...

    常见网络故障排除

    这包括获取MAC头信息、检查网络层报文头、查询路由表以确定下一跳地址,以及必要的ARP解析过程。 - **体系结构差异**:不同系列的Cisco路由器,如2500系列、2600系列、3600系列、4000系列、7200系列和7500系列,虽然...

    TCP/IP调试助手2.zip

    TCP/IP调试助手是一款用于网络通信调试的实用工具,尤其对理解TCP/IP协议栈的工作原理以及检测网络连接问题有很大帮助。这个名为"TCP/IP调试助手2.zip"的压缩包包含了两个关键文件:tcpudp_2.1.1.exe是实际的调试...

    管理网络设备知识培训.pptx

    此外,检查设备的包装、外观、做工细节以及配件的完整性,也能帮助判断设备的真实性。 在硬件层面,路由器和交换机的处理器(CPU)和内存(内存)是核心组件,它们决定了设备的处理能力和数据吞吐量。此外,了解...

    ccnp知识(原理思路+配置实例)笔记

    - **网络拓扑图的组成**:包括设备名称、型号、设置间的连接等基本信息,以及不同层级的具体技术细节。 - **建立网络拓扑图**:对于大型网络,可以创建多个拓扑图,每个图展示网络的不同部分。 **四、发现网络...

    TCP拦截和网络地址转换

    T C P拦截,并讨论其特性以及它是如何在网络中实现的。还将 介绍有关T C P拦截的所有配置和调试命令。在 T C P拦截这一部分,最后给出几个使用该特性的 示例。之后,介绍 N AT的整体概念,包括 N AT的引入、 N ...

    2011上半年软考网络工程师试题与答案.doc

    - CISCO路由器操作系统IOS支持用户模式、特权模式和配置模式,不包括远程连接模式,尽管远程连接可通过特定命令在其他模式下实现。 ### 18. CATV电缆上网设备 - 通过CATV电缆访问互联网,用户端必须安装的设备是...

    Qt_局域网文件共享和聊天室

    项目中的文件管理部分可能涉及了文件I/O操作,Qt的QFile、QDir和QFileInfo类能够帮助开发者轻松地进行文件的读写、目录操作以及获取文件信息。对于文件上传和下载,可能使用了QNetworkRequest和QNetworkReply类进行...

    网络工程师真题2011上半年

    包括CPU寄存器功能、寻址方式的作用、总线结构的重要性、计算机系统可靠性分析、软件产品可靠度的影响因素、模块耦合类型、风险概念、项目估算方法、软件项目的活动图分析、软件著作权中的翻译权、网络通信基础知识...

    思科认证实验

    2. **检查现有的bootstrap软件版本**:虽然不是必须检查的内容,但了解当前设备上的bootstrap软件版本有助于判断是否需要更新bootstrap程序,以确保新版本的IOS能够正确启动。 ### 知识点三:ARP缓存机制与跨网段...

    Runtime 万能控制器跳转.zip

    - **反射(Reflection)**:Runtime可以获取类、协议、方法等信息,实现代码的自我检查和调整。 2. **控制器跳转**: - **UIStoryboardSegue**:在Storyboard中, segue用于连接不同的视图控制器,实现页面间的...

    营运管理UNIAPP项目踩坑和填坑之旅.docx

    处理点击消息跳转时,可以通过`getCurrentPages()`获取当前页面实例,根据页面路由判断跳转方式,如使用`redirectTo`或`navigateTo`。 接着,**定位偏移问题**是地图功能中常见的问题。uni-app在不同平台使用不同的...

    编程狂人第三十九期.pdf

    - **步骤**:从网络连接、服务器硬件、操作系统配置、应用程序代码等多个层面进行检查。 #### MySQL原生HA方案—Fabric体验之旅 - **介绍**:MySQL Fabric是一种用于管理MySQL集群的解决方案,提供高可用性和负载...

Global site tag (gtag.js) - Google Analytics