• IOS中如何获取手机的当前IP


    网上有许多类似的帖子、在搜索了资料以后、觉得下面的方法是最简单的、

    使用的时候直接把类方法拖到自己新建的分类中就行、

    .h文件

    #import <Foundation/Foundation.h>

    @interface NSObject (GetIP)

    + (NSString *)deviceIPAdress;

    @end

    .m文件

    #import "NSObject+GetIP.h"

    #include <ifaddrs.h>

    #include <arpa/inet.h>

    上面的两个头文件一定要导入


    @implementation NSObject (GetIP)

    + (NSString *)deviceIPAdress {
        NSString *address = @"an error occurred when obtaining ip address";
        struct ifaddrs *interfaces = NULL;
        struct ifaddrs *temp_addr = NULL;
        int success = 0;
        
        success = getifaddrs(&interfaces);
        
        if (success == 0) { // 0 表示获取成功
            
            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;
            }
        }
        
        freeifaddrs(interfaces);
        
    //    NSLog(@"手机的IP是:%@", address);
        
        return address;
    }


    @end

  • 相关阅读:
    Flex布局新写法兼容写法详解
    一个CSS值转REM的Sublime Text插件
    Oracle SQL函数之转换函数To_char汇总
    Oracle SQL函数之日期函数
    Oracle SQL函数之数学函数
    Oracle SQL函数之字符串函数
    Sybase isql常用命令
    sybase用户管理(创建、授权、删除)
    使用isql连接Sybase ASE数据库的常见错误及处理方式
    Sybase配置中文语言支持及字符集
  • 原文地址:https://www.cnblogs.com/er-dai-ma-nong/p/4876598.html
Copyright © 2020-2023  润新知