zoukankan      html  css  js  c++  java
  • iOS获取WIFI的IP、子网掩码,以及域名转IP

    获取WIFI需要的头文件:

    #import "GetCurrentIP.h"

    #import <ifaddrs.h>

    #import <arpa/inet.h>

    #import <SystemConfiguration/CaptiveNetwork.h>

    #include <netdb.h>

    #include <net/if.h>

    #import <dlfcn.h>

    #include <sys/socket.h>

    #include <sys/sysctl.h>

    获取所连wifi的IP的方法:

    #pragma mark - 获取用户当前的IP地址

    + (nullable NSString*)getCurrentLocalIP

    {

        NSString *address = nil;

        struct ifaddrs *interfaces = NULL;

        struct ifaddrs *temp_addr = NULL;

        int success = 0;

        // retrieve the current interfaces - returns 0 on success

        success = getifaddrs(&interfaces);

        if (success == 0) {

            // Loop through linked list of interfaces

            temp_addr = interfaces;

            while(temp_addr != NULL) {

                if(temp_addr->ifa_addr->sa_family == AF_INET) {

                    // Check if interface is en0 which is the wifi connection on the iPhone

                    if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {

                        // Get NSString from C String

                        address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];

                    }

                }

                temp_addr = temp_addr->ifa_next;

            }

        }

        // Free memory

        freeifaddrs(interfaces);

        return address;

        }

     获取所连WIFI的详细信息:

     + (nullable NSString*)getCurrentWifiMessage {

            NSString *address = nil;

            struct ifaddrs *interfaces = NULL;

            struct ifaddrs *temp_addr = NULL;

            int success = 0;

            // retrieve the current interfaces - returns 0 on success

            success = getifaddrs(&interfaces);

            if (success == 0)

            {

                // Loop through linked list of interfaces

                temp_addr = interfaces;

                while(temp_addr != NULL)

                {

                    if(temp_addr->ifa_addr->sa_family == AF_INET)

                    {

                        // Check if interface is en0 which is the wifi connection on the iPhone

                        if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])

                        address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];

                        //                    NSLog(@"子网掩码:%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)]);

                        //                NSLog(@"本地IP:%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]);

                        //                NSLog(@"广播地址:%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_dstaddr)->sin_addr)]);

                    }

                    

                    temp_addr = temp_addr->ifa_next;

                }

            }

            // Free memory

            freeifaddrs(interfaces);

            return address;

    }

     域名转换成IP:

    #pragma mark - 域名转成IP的方法

    + (NSString *)queryIpWithDomain:(NSString *)domain

    {

        struct hostent *hs;

        struct sockaddr_in server;

        if ((hs = gethostbyname([domain UTF8String])) != NULL)

        {

            server.sin_addr = *((struct in_addr*)hs->h_addr_list[0]);

            return [NSString stringWithUTF8String:inet_ntoa(server.sin_addr)];

        }

        return @"1";

    }

  • 相关阅读:
    常用模块
    二分查找算法
    递归函数
    文件操作
    day02--Python基础二(基础数据类型)
    Python学习笔记day01--Python基础
    Python2X和Python3X的区别
    testdisk修复文件系统
    机器学习入门 快速版
    tableau教程 快速入门
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/7091625.html
Copyright © 2011-2022 走看看