摘要:本文将带你了解IOS开发入门iOS判断连接的是内网还是外网,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS判断连接的是内网还是外网,希望本文对大家学IOS有所帮助。
ios判断自己连接的网络是内网还是外网
//判断连接的服务器相对于本机为内网还是外网+(int)isInnerIP:(NSString
*)hostName{ BOOL bValid = false; bool
_isInnerIp = false; //NSString to
char* const char *webSite = [hostName
cStringUsingEncoding:NSASCIIStringEncoding]; if
(webSite == NULL) { return
-1; } // Get host entry info
for given host struct hostent *remoteHostEnt =
gethostbyname(webSite); if (remoteHostEnt == NULL) { return
-1; } // Get address info from
host entry struct in_addr *remoteInAddr = (struct
in_addr *) remoteHostEnt->h_addr_list[0]; if
(remoteInAddr == NULL)
{ return
-1; } // Convert numeric addr
to ASCII string char *sRemoteInAddr = inet_ntoa(*remoteInAddr); if
(sRemoteInAddr == NULL)
{ return
-1; } DebugLog(@"sRemoteInAddr:%s",
sRemoteInAddr); unsigned int ipNum =
str2intIP(sRemoteInAddr); unsigned int aBegin =
str2intIP("10.0.0.0"); unsigned int aEnd =
str2intIP("10.255.255.255"); unsigned int
bBegin = str2intIP("172.16.0.0"); unsigned
int bEnd =
str2intIP("172.31.255.255"); unsigned int
cBegin = str2intIP("192.168.0.0"); unsigned
int cEnd = str2intIP("192.168.255.255"); DebugLog(@"ipNum:%u",
ipNum); _isInnerIp = IsInner(ipNum, aBegin, aEnd) ||
IsInner(ipNum, bBegin, bEnd) || IsInner(ipNum, cBegin,
cEnd); if(_isInnerIp) //( (a_ip>>24 ==
0xa) || (a_ip>>16 == 0xc0a8) || (a_ip>>22 == 0x2b0)
) { bValid
= 0;//内网 }else{ bValid
= 1;//外网 } return
bValid;}unsigned int str2intIP(char* strip) //return int
ip{ unsigned int
intIP; if(!(intIP = inet_addr(strip))) { perror("inet_addr
failed./n"); return
-1; } return
ntohl(intIP);} bool IsInner(unsigned int userIp, unsigned int begin,
unsigned int end){ return (userIp >= begin)
&& (userIp <= end);}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号