近期ipv6审核,个人解决方法
2017-05-03 10:04
627 查看
关于ipv6网络请求机制不在赘述,网上教程挺多,简单说下我的解决方法。
苹果的审核要求是在iOS9以上支持就可以,所以可以不用低版本系统。对于服务端是不需要做其他的配置,而大部分公司使用的阿里云也确实不支持IPv6。
服务器不要配置4a记录,如果配置了4a记录,服务器就必须支持IPv6,这个涉及到后端,工作量略大。所以前端转换IPv6地址访问服务器是目前较好方法。只需要把IPv4 IP地址转换为 IPv6地址 使用NAT64转换,在访问服务器就可以了。下面贴出转换IP地址方法,仅用在iOS9以上。
苹果的审核要求是在iOS9以上支持就可以,所以可以不用低版本系统。对于服务端是不需要做其他的配置,而大部分公司使用的阿里云也确实不支持IPv6。
服务器不要配置4a记录,如果配置了4a记录,服务器就必须支持IPv6,这个涉及到后端,工作量略大。所以前端转换IPv6地址访问服务器是目前较好方法。只需要把IPv4 IP地址转换为 IPv6地址 使用NAT64转换,在访问服务器就可以了。下面贴出转换IP地址方法,仅用在iOS9以上。
NSString * ipv6Addresses = [Class convertIpv6WithIpAddresses:@"192.0.0.1"];
#include <sys/socket.h> #include <netdb.h> #include <arpa/inet.h> #include <err.h>
+ (NSString *)convertIpv6WithIpAddresses:(NSString *)ipAddresses { const char * c_ip = [ipAddresses UTF8String]; char * ipchar = calloc(ipAddresses.length, sizeof(char)); strcpy(ipchar, c_ip); struct addrinfo hints, *res, *res0; int error, s; const char * newChar = "No"; memset(&hints, 0, sizeof(hints)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_DEFAULT; error = getaddrinfo(ipchar, "http", &hints, &res0); free(ipchar); if (error) { errx(1, "%s", gai_strerror(error)); /*NOTREACHED*/ } s = -1; static struct sockaddr_in6 * addr6; static struct sockaddr_in * addr; // NSString * NewStr = NULL; char ipbuf[32]; NSString * TempA = NULL; for (res = res0; res; res = res->ai_next) { if (res->ai_family == AF_INET6) { addr6 =( struct sockaddr_in6*)res->ai_addr; newChar = inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, sizeof(ipbuf)); TempA = [[NSString alloc] initWithCString:(const char*)newChar encoding:NSASCIIStringEncoding]; // address = TempA; // NSString * TempB = [NSString stringWithUTF8String:"&&ipv6"]; // // NewStr = [TempA stringByAppendingString: TempB]; printf("%s\n", newChar); } else { addr =( struct sockaddr_in*)res->ai_addr; newChar = inet_ntop(AF_INET, &addr->sin_addr, ipbuf, sizeof(ipbuf)); TempA = [[NSString alloc] initWithCString:(const char*)newChar encoding:NSASCIIStringEncoding]; // NSString * TempB = [NSString stringWithUTF8String:"&&ipv4"]; // // NewStr = [TempA stringByAppendingString: TempB]; printf("%s\n", newChar); } break; } freeaddrinfo(res0); return TempA; }
相关文章推荐
- 苹果审核因IPv6被拒的探索与解决方法
- [置顶] 【App Store审核】因PLA1.2被拒的个人经历和解决方法
- 【PLA1.2】审核被拒个人解决方法
- 近期关于NSIS方面的问题解决方法
- xp开机加载个人设置很慢的解决方法
- ARP病毒可能的表现形式 进程 端口 及解决方法(个人看法) 推荐
- 关于使用updatepanle后页面还会刷新的个人解决方法。
- 针对近期的驱动病毒usb8028,usb8028x,以及一个随机的保护驱动的解决方法
- 浅谈个人在瀑布流网页的实现中遇到的问题和解决方法
- xp系统卡在“正在加载个人设置”的解决方法
- xp系统卡在“正在加载个人设置”的解决方法
- 浅谈个人在瀑布流网页的实现中遇到的问题和解决方法
- 解决java网络编程IPv6带来的问题方法
- android 退出程序 个人解决方法
- 近期项目中遇到的问题和相应的解决方法
- 清除文本框内容的解决方法(个人见解)
- 卡巴斯基6.0个人版安装win2003 出现无法安装的解决方法
- 近期 IE 打开新浪搜狐网页 CPU 使用率高的解决方法
- 个人FTP建站域名解析serv-u常见问题解决方法之完全解决方案
- 针对近期的驱动病毒usb8028,usb8028x,以及一个随机的保护驱动的解决方法