iOS判断连接的是内网还是外网
程序员文章站
2022-04-11 18:12:43
ios判断自己连接的网络是内网还是外网
//判断连接的服务器相对于本机为内网还是外网
+(int)isInnerIP:(NSString *)hostName
{...
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判断连接的是内网还是外网
-
php判断是android还是ios还是wp的访问网站
-
android和ios调用php写的接口如何判断用户使用的是安卓还是苹果
-
js判断客户端是iOS还是Android等移动终端的方法_javascript技巧
-
android和ios调用php写的接口如何判断用户使用的是安卓还是苹果
-
js判断客户端是iOS还是Android等移动终端的方法_javascript技巧
-
javascript - 用JS如何判断打开网页的是安卓还是ios
-
javascript - 用JS如何判断打开网页的是安卓还是ios
-
iOS判断连接的是内网还是外网
-
PHP判断手机是IOS还是Android的三个方法