Determining IP Address from URL in iOS

后端 未结 3 1602
小蘑菇
小蘑菇 2021-01-03 01:57

I need to get the IP address of a CDN from it\'s URL in an iOS app. From a long stack search, i\'ve determined a method for doing this with the following:

st         


        
相关标签:
3条回答
  • 2021-01-03 02:43

    Here is a Swift 3.1 version of converting a URL hostname to IP address.

    import Foundation
    private func urlToIP(_ url:URL) -> String? {
      guard let hostname = url.host else {
        return nil
      }
    
      guard let host = hostname.withCString({gethostbyname($0)}) else {
        return nil
      }
    
      guard host.pointee.h_length > 0 else {
        return nil
      }
    
      var addr = in_addr()
      memcpy(&addr.s_addr, host.pointee.h_addr_list[0], Int(host.pointee.h_length))
    
      guard let remoteIPAsC = inet_ntoa(addr) else {
        return nil
      }
    
      return String.init(cString: remoteIPAsC)
    }
    
    0 讨论(0)
  • 2021-01-03 02:48

    Maybe this function will work?

    #import <netdb.h>
    #include <arpa/inet.h>
    
    - (NSString*)lookupHostIPAddressForURL:(NSURL*)url
    {
        // Ask the unix subsytem to query the DNS
        struct hostent *remoteHostEnt = gethostbyname([[url host] UTF8String]);
        // Get address info from host entry
        struct in_addr *remoteInAddr = (struct in_addr *) remoteHostEnt->h_addr_list[0];
        // Convert numeric addr to ASCII string
        char *sRemoteInAddr = inet_ntoa(*remoteInAddr);
        // hostIP
        NSString* hostIP = [NSString stringWithUTF8String:sRemoteInAddr];
        return hostIP;
    }
    
    0 讨论(0)
  • 2021-01-03 03:02

    I had no problems compiling that code with the following includes:

    #import <netdb.h>
    #include <arpa/inet.h>
    
    0 讨论(0)
提交回复
热议问题