iOS - 关于获取本机IP地址的实现

    xiaoxiao2021-11-30  16

    在此,封装了一个类:

    #import <Foundation/Foundation.h>

    @interface FPJGetCurrentDeviceIPTool : NSObject

    - (NSString *)getIpAddresses;

    @end

    #import "FPJGetCurrentDeviceIPTool.h"

    #import <ifaddrs.h>

    #import <arpa/inet.h>

    @implementation FPJGetCurrentDeviceIPTool

    //获取ip地址

    - (NSString *)getIpAddresses{

        NSString *address = @"error";

        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;

    }

    OK,到此封装完成,结束--------
    转载请注明原文地址: https://ju.6miu.com/read-679185.html

    最新回复(0)