03-WIFI通讯获取Wifi名称及ip地址

原创 2017年08月13日 23:33:47
  • 在上一小节中,笔者在介绍wifi通讯流程中介绍到,wifi通讯的本质就是由路由器(wifi芯片)担任局域网服务器来实现多个客户端之间的数据转发,所以第一步我们的服务器需要去监听局域网内的端口号,而要想实现这一过程我们首先需要做两件事

    • 1.检测客户端(手机)有没有连接wifi,如果没有连接wifi的话,是不能够实现通讯的
    • 2.需要获取服务端(服务器)在局域网内的ip地址,因为如果不知道服务器的ip地址,我们的客户端是无法连接服务器的
  • 本小节主要介绍一下iOS如何去获取本机的wifi名称及ip地址


1.1-获取本机wifi名称及mac地址

  • 1。导入系统配置框架

//系统配置框架(网络配置也在该框架中)
#import <SystemConfiguration/CaptiveNetwork.h>

  • 2.代码获取

  • 只对真机wifi连接有效,如果是模拟器和真机4G网络则都为nil


//只对真机wifi连接有效,如果是模拟器和真机4G网络则都为nil
+(NSString *)currentWifiSSID
{
    //1.获取网络底层监视的所有接口列表,返回的是一个BSD接口名称
    NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
    
    id info = nil;
    for (NSString *ifnam in ifs) {
        
        //2.通过BSD接口名称获取网络信息,返回的是一个字典。其中包含 1.wifi名称字符串  2.mac地址 3.wifi名称二进制数据
        info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
        if (info && [info count]) {
            break;
        }
    }
    
    //3.获取字典
    NSDictionary *dctySSID = (NSDictionary *)info;
    
    //4.字典的SSID键对应的值就是wifi的名称
    //注意:  1. 模拟器获取不到wifi名称 返回为nil  2.真机的话如果没有连接wifi而是使用4G,返回的也是nil
    NSString *ssid = [dctySSID objectForKey:@"SSID"];//wifi名称
    
//     NSString *bssid = [dctySSID objectForKey:@"BSSID"];//路由mac地址
    
    return ssid;
    
}

1.2-获取本机在当前wift路由器中的ip地址

  • 1.导入框架


#include <arpa/inet.h>
#include <netdb.h>
#include <net/if.h>
#include <ifaddrs.h>
#import <dlfcn.h>

  • 2.代码获取

//获取本机在当前wifi中的ip地址,模拟器真机均可获取
+(NSString *)localWiFiIPAddress
{
    BOOL success;
    struct ifaddrs * addrs;
    const struct ifaddrs * cursor;
    
    success = getifaddrs(&addrs) == 0;
    if (success) {
        cursor = addrs;
        while (cursor != NULL) {
            // the second test keeps from picking up the loopback address
            if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0)
            {
                NSString *name = [NSString stringWithUTF8String:cursor->ifa_name];
                if ([name isEqualToString:@"en0"])  // Wi-Fi adapter
                    return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];
            }
            cursor = cursor->ifa_next;
        }
        freeifaddrs(addrs);
    }
    return nil;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android获取手机WiFi IP地址,MAC地址和网关地址程序实例

现在博主在上大三,正在学习一些计算机网络的一些概念,知道了局域网ip和网关ip不同的概念,当时还纳了闷了2的32次方好像不咋够用啊,原来是这个样子。由于之前学过一段时间的Android,同时又在上An...
  • qq_26772049
  • qq_26772049
  • 2017年03月30日 22:58
  • 2402

wifi无法获取ip地址的解决方法

最近家里的wifi突然不好用了,经常连不上,手机显示正在获取ip,电脑显示无internet访问。重启路由就可以链接设备,但是过一会就又无法连接新设备了。在网上搜了很多方法,也电话了TP-Link的技...
  • crazymarsman
  • crazymarsman
  • 2015年01月05日 21:57
  • 3394

android获取wifi外网ip的方法

本文我们分享几个android开发中获取wifi外网ip的实例,这段代码是非常实例的代码片断,基乎每个项目都需要用到,值得收藏。 android获取wifi外网ip的方法 // 获取外...
  • qq_35114086
  • qq_35114086
  • 2016年08月24日 13:36
  • 1088

NetworkInfo类,判断网络类型,获取WIFI名称,网速,网络信号,IP地址,MAC地址

转自:http://blog.csdn.net/ygc87/article/details/7629749
  • jamkier
  • jamkier
  • 2014年07月10日 11:12
  • 1957

iOS 获取WIFI,IP地址

一获取mac地址:#include // Per msqr #include #include #include - (NSString *) macaddress { int ...
  • lmyuanhang
  • lmyuanhang
  • 2015年08月20日 15:01
  • 5535

iOS获取设备IP地址(WiFi,蜂窝数据两种情况)

以下列举出iOS下获取IP地址的常用的两种方式: 第一种适合在WiFi情况下使用,但是如果切换到蜂窝数据下,则返回数据@“error” #import #import /...
  • u011467458
  • u011467458
  • 2016年12月01日 15:51
  • 3552

Android网络相关(WiFi的开关,WiFi热点的开关,获取手机IP地址等)

下面是一个跟安卓网络相关的工具类,里面包含了一些很常用的功能,如WiFi的开关,WiFi热点的开关,获取手机IP地址等…… import android.content.Context; ...
  • u014653197
  • u014653197
  • 2016年06月22日 11:14
  • 1559

Delphi 获取安卓手机WIFI信息(XE8)

Delphi 获取安卓手机WIFI信息(XE8)源码
  • lyf_lyf
  • lyf_lyf
  • 2015年09月02日 01:14
  • 2080

android获取wifi外网ip的方法

// 获取外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; ...
  • u010443618
  • u010443618
  • 2015年07月29日 22:59
  • 3814

Win7系统搭建WiFi热点详细攻略(遇到的各种问题的解决办法如:手机始终显示正在获取IP)(没有第三方软件)

本来没有打算详细整理这些东西,在Win7旗舰版上搭建Wifi是比较容易的事,但每个人在搭建过程中都会遇到各种各样的问题,敝人就是那位遇到很奇葩的问题的悲惨人士。经过百般挣扎,终于成功实现了笔记本作为无...
  • UP19910522
  • UP19910522
  • 2013年11月14日 12:13
  • 10019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:03-WIFI通讯获取Wifi名称及ip地址
举报原因:
原因补充:

(最多只允许输入30个字)