ios之域名转IP和获取IP
之前的项目有域名转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相关推荐
- php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
[导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...
- gethostbyname函数用域名或主机名获取IP地址
struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等.传 ...
- php怎么获取用户所在地址,php获取客户端ip及获取ip所在地址
// 获取ip function ip() { if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = $_SERVER[" ...
- android获取4g网络ip,android 获取ip地址,获取2,3,4g,wifi状态等
1.获取ip地址 public String getLocalIpAddress() { if(((ConnectivityManager) this.getSystemService(Context ...
- 获取ip地址解析归属地
本文目的: 通过分析ip地址归属地解析过程,分享探究问题的基本步骤,逐步认识基础知识的重要. 声明一下: 基于本人知识视野,个人理解能力的限制,文中难免有不当之处,敬请理解. 大家都知道,网上有很多可 ...
- C# 获取IP地址、主机信息(Host)、浏览器信息
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...
- 使用淘宝IP库获取用户ip地理位置
为什么80%的码农都做不了架构师?>>> 以前用过GOOGLE地图和百度地图获取过用户地理位置,现在又多了一个方法,那就是使用淘宝IP库获取用户ip地理位置,一起来看代码吧. ...
- 根据ip地址获取城市名的几种方法
2019独角兽企业重金招聘Python工程师标准>>> 在某些场景下,可能需要用到根据ip地址获取ip所对应的城市名. 貌似腾讯.百度等开放接口已经失效或者免费服务接口关闭等原因,很 ...
- php使用淘宝IP库接口获取 IP所属地和运营商
php使用淘宝IP库接口获取 IP所属地和运营商 代码: ---- root@ops-docker-1:/tmp/IP_txt/get_random_line/contrast# cat taobao ...
最新文章
- Geoderma:南土所梁玉婷组-施用粪肥土壤中抗生素抗性基因和金属抗性基因的共存机制...
- 输入一个整数,判断是奇数还是偶数
- Linux —— 时间(hwlock设置硬件时间)
- 【译】A Brief History of P2P Content Distribution, in 10 Major Steps
- android自动启动某个程序,android – 如何以编程方式在xiaomi中启用应用程序的自动启动...
- Flexbox弹性盒模型
- en55032最新标准下载_大型设备塔吊安装维保、安全检查及案例,94页PPT下载!
- linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上
- Unity3d中的属性(Attributes)整理【转载】
- 山东大学软件学院概率论与数理统计(考试)——期末考试回忆版
- 系统辨识与自适应控制matlab程序_杂志精选 | 自适应声反馈抑制技术及其应用
- 小米台灯突然自己亮了_除了彩屏和小爱,还有哪些升级?——小米手环4 NFC版...
- SFDC Developer
- 铁乐学Python_day05-字典dict
- 计算机显示屏怎么加密,怎样给电脑设置密码的屏幕保护
- Linux 下的Chm 文件阅读器
- HI3559A系统卡死问题-修复
- 少年你骨骼精奇?AI现在可以帮你看一看了
- 电路原理笔记整理,电路知识点总结
- MAC OS X 安装Scrapy爬虫工具