之前的项目有域名转IP这需求,所以查了这方面的资料,然后站在一些大牛的肩膀上写了一个网络工具类,感觉还可用,就把一些代码分享下,让有这方面需要的人参考参考。

1.要引入的头文件

//域名转IP
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
//获取IP
#include <arpa/inet.h>
#include <netdb.h>
#include <net/if.h>
#include <ifaddrs.h>
#import <dlfcn.h>
#import <SystemConfiguration/SystemConfiguration.h>

2.域名转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 nil;
}

调用代码:

[NetUtil queryIpWithDomain:@"www.baidu.com"];

3.通过查询网址,解析html得到ip地址

+ (NSString *)whatismyipdotcom
{NSError *error;NSURL *ipURL = [NSURL URLWithString:@"http://iframe.ip138.com/ic.asp"];NSString *ip = [NSString stringWithContentsOfURL:ipURL encoding:1 error:&error];NSRange range = [ip rangeOfString:@"<center>ÄúµÄIPÊÇ£º["];NSString *str = @"<center>ÄúµÄIPÊÇ£º[";if (range.location > 0 && range.location < ip.length){range.location += str.length ;range.length = 17;ip = [ip substringWithRange:range];range = [ip rangeOfString:@"]"];range.length = range.location;range.location = 0;ip = [ip substringWithRange:range];}return ip ? ip : nil;
}

4.查询内网地址ip方法1

+ (NSString *)queryIPAddress
{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 addressif (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 adapterreturn [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];}cursor = cursor->ifa_next;}freeifaddrs(addrs);}return nil;
}

5.查询内网地址ip方法2

+ (NSString *)localIPAddress
{char baseHostName[256] = {0}; // Thanks, Gunnar Larischint success = gethostname(baseHostName, 255);if (success != 0) return nil;//    baseHostName[255] = '0';NSString *hostname=nil;
#if TARGET_IPHONE_SIMULATORhostname=[NSString stringWithFormat:@"%s", baseHostName];
#elsehostname=[NSString stringWithFormat:@"%s.local", baseHostName];
#endifstruct hostent *host = gethostbyname([hostname UTF8String]);if (!host) {herror("resolv"); return nil;}struct in_addr **list = (struct in_addr **)host->h_addr_list;return [NSString stringWithCString:inet_ntoa(*list[0]) encoding:NSUTF8StringEncoding];
}

ios之域名转IP和获取IP相关推荐

  1. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法

    [导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...

  2. gethostbyname函数用域名或主机名获取IP地址

    struct hostent *gethostbyname(const char *name);    这个函数的传入值是域名或者主机名,例如"www.google.cn"等等.传 ...

  3. php怎么获取用户所在地址,php获取客户端ip及获取ip所在地址

    // 获取ip function ip() { if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = $_SERVER[" ...

  4. android获取4g网络ip,android 获取ip地址,获取2,3,4g,wifi状态等

    1.获取ip地址 public String getLocalIpAddress() { if(((ConnectivityManager) this.getSystemService(Context ...

  5. 获取ip地址解析归属地

    本文目的: 通过分析ip地址归属地解析过程,分享探究问题的基本步骤,逐步认识基础知识的重要. 声明一下: 基于本人知识视野,个人理解能力的限制,文中难免有不当之处,敬请理解. 大家都知道,网上有很多可 ...

  6. C# 获取IP地址、主机信息(Host)、浏览器信息

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  7. 使用淘宝IP库获取用户ip地理位置

    为什么80%的码农都做不了架构师?>>>    以前用过GOOGLE地图和百度地图获取过用户地理位置,现在又多了一个方法,那就是使用淘宝IP库获取用户ip地理位置,一起来看代码吧. ...

  8. 根据ip地址获取城市名的几种方法

    2019独角兽企业重金招聘Python工程师标准>>> 在某些场景下,可能需要用到根据ip地址获取ip所对应的城市名. 貌似腾讯.百度等开放接口已经失效或者免费服务接口关闭等原因,很 ...

  9. php使用淘宝IP库接口获取 IP所属地和运营商

    php使用淘宝IP库接口获取 IP所属地和运营商 代码: ---- root@ops-docker-1:/tmp/IP_txt/get_random_line/contrast# cat taobao ...

最新文章

  1. Geoderma:南土所梁玉婷组-施用粪肥土壤中抗生素抗性基因和金属抗性基因的共存机制...
  2. 输入一个整数,判断是奇数还是偶数
  3. Linux —— 时间(hwlock设置硬件时间)
  4. 【译】A Brief History of P2P Content Distribution, in 10 Major Steps
  5. android自动启动某个程序,android – 如何以编程方式在xiaomi中启用应用程序的自动启动...
  6. Flexbox弹性盒模型
  7. en55032最新标准下载_大型设备塔吊安装维保、安全检查及案例,94页PPT下载!
  8. linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上
  9. Unity3d中的属性(Attributes)整理【转载】
  10. 山东大学软件学院概率论与数理统计(考试)——期末考试回忆版
  11. 系统辨识与自适应控制matlab程序_杂志精选 | 自适应声反馈抑制技术及其应用
  12. 小米台灯突然自己亮了_除了彩屏和小爱,还有哪些升级?——小米手环4 NFC版...
  13. SFDC Developer
  14. 铁乐学Python_day05-字典dict
  15. 计算机显示屏怎么加密,怎样给电脑设置密码的屏幕保护
  16. Linux 下的Chm 文件阅读器
  17. HI3559A系统卡死问题-修复
  18. 少年你骨骼精奇?AI现在可以帮你看一看了
  19. 电路原理笔记整理,电路知识点总结
  20. MAC OS X 安装Scrapy爬虫工具

热门文章

  1. 项目经验:抽奖程序(Python)
  2. Python 关键字global全局变量详解
  3. 记录两段杀鸡用的牛刀——分钱和算日子……
  4. 网站商务通 v7.0 下载
  5. VoIP领域中常用的RFC文档
  6. pixhawk 模拟飞行
  7. 1、项目1-输出点阵图
  8. PPT:烟草行业互联网智能工厂
  9. 录像机获取服务器信息失败,监控录像机找不到服务器
  10. 墨竹:黄金空头落入帷幕,短线多头仍是最佳抉择!