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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013263917/article/details/77151545

iOS-获取Wifi的IP和名字

下面的方法在iOS9里, 显示被弃用(代码粘贴其他博客, 都忘了).但是在真机上依旧可以运行(模拟器上运行返回的都是空和错), 会有黄色警告提出,从警告中可以看出替代此类的iOS新出的类别.导入Net...
  • nbkey
  • nbkey
  • 2015-12-07 11:06:36
  • 2207

android开发工具类之获得WIFI IP地址或者手机网络IP

有的时候我们需要获得WIFI的IP地址获得手机网络的IP地址,这是一个工具类,专门解决这个问题,这里需要两个权限:   第一个权限是获得WIFI的IP地址...
  • u012702547
  • u012702547
  • 2015-10-24 19:49:15
  • 4115

奔五的人学iOS:swift获取连接的wifi名称及ap的mac地址

在网上搜索了半天,都是各种copy版本,更没有swift版本。经过多次试验终于搞定集成,与大家分享一下,以下代码在xcode7.1实现。 1、由于在swift中,需要导入系统库,所以还是需要一个桥接...
  • miw__
  • miw__
  • 2015-11-16 11:26:33
  • 3700

QT环境下实现对WiFi名称的的获取

  • 2016年04月01日 13:51
  • 5KB
  • 下载

获取当前设备的局域网以及链接的WiFi分配的IP地址

#pragma mark - 获取设备当前连接的局域网的名称(获取不到返回nil) /**  *  @author zm  *  *  @brief  获取设备当前连接的局域网的名称(获取不到返回n...
  • MinggeQingchun
  • MinggeQingchun
  • 2016-06-03 15:21:01
  • 1421

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

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

【Android】获取当前连接的wifi IP地址

AndroidManifest.xml文件增加用户权限 manifest xmlns:android="http://schemas.android.com/apk/res/android" ...
  • yeqi3000
  • yeqi3000
  • 2013-07-30 22:25:35
  • 3383

安卓获取接入的Wifi热点设备的Ip地址

最近在做一个安卓设备间传输文件的app,建立热点让两部设备在同一个局域网之间传输文件,需要知道连接热点的设备的ip地址,这边记录一下获取的方式:WifiManager wifiManager = (W...
  • qq_19560943
  • qq_19560943
  • 2017-01-10 21:16:08
  • 2472

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

转自:http://blog.csdn.net/ygc87/article/details/7629749
  • jamkier
  • jamkier
  • 2014-07-10 11:12:46
  • 2237

android获取手机ip地址wifi状态与非wifi状态

方法一(只适合wifi状态): public static String getIp(Context contxext) { WifiManager wm = (WifiManager) cont...
  • s569646547
  • s569646547
  • 2015-08-27 18:08:18
  • 1199
收藏助手
不良信息举报
您举报文章:03-WIFI通讯获取Wifi名称及ip地址
举报原因:
原因补充:

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