美文网首页
学习socket笔记

学习socket笔记

作者: 小灰是蜗牛君 | 来源:发表于2017-08-24 16:48 被阅读15次

获取手机wifi 名称 和mac地址

//只对真机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地址
    
    NSString *idAdress = [self localWiFiIPAddress];
    NSLog(@"------ %@==== %@ ++++ %@",ssid,bssid,idAdress);
    
    return ssid;
    
}

获取手机在链接wifi网络下 ip地址

//获取本机在当前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;
}

相关文章

  • 网络编程

    python学习笔记-网络编程 socket编程: socket()函数:socket.socket([famil...

  • #Socket回顾学习笔记

    Socket学习笔记 Socket基础知识 背景 Socket概念 Socket 又称"套接字",是系统提供的用于...

  • iOS#GCDAsyncSocket使用

    背景 最近在开发使用Socket,重新复习了socket基本知识,文章如下: #Socket回顾学习笔记UDP G...

  • Python学习23-socket编程

    查看所有Python相关学习笔记 socket编程 应用使用socket编程接口来通过TCP/IP协议进行通信 网...

  • 大师兄的Python学习笔记(十六): FTP与ftplib

    大师兄的Python学习笔记(十五): Socket编程大师兄的Python学习笔记(十七): Mail编程 一、...

  • 第二章 IPC机制详解(4)

    本文为Android开发艺术探索的笔记,仅供学习 4.6 Socket的使用 我们可以通过Socket来进行跨进程...

  • pyorientdb的学习笔记

    pyorientdb的学习笔记: pyorient 是用 socket(tcp) 连接 OrientDB Serv...

  • 学习socket笔记

    获取手机wifi 名称 和mac地址 获取手机在链接wifi网络下 ip地址

  • Socket学习笔记

    Socket 套接字 IP地址 定位网络主机 端口号 定位进程(定位程序)有效端口号范围 0 ~ 65535, 0...

  • SOCKET 学习笔记

    前言 面经中提到的epoll,涉及到了socket编程。为了深入了解epoll原理,需要首先了解socket编程。...

网友评论

      本文标题:学习socket笔记

      本文链接:https://www.haomeiwen.com/subject/gcpedxtx.html