更新EsptouchForIOS
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
//
|
||||
// ESPNetUtil.m
|
||||
// EspTouchDemo
|
||||
//
|
||||
// Created by fby on 5/15/15.
|
||||
// Copyright (c) 2015 fby. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ESP_NetUtil.h"
|
||||
#import "ESP_WifiUtil.h"
|
||||
#import "ESP_ByteUtil.h"
|
||||
#import "ESPVersionMacro.h"
|
||||
|
||||
#define IP4_LEN 4
|
||||
|
||||
#define IP6_LEN 16
|
||||
|
||||
@implementation ESP_NetUtil
|
||||
|
||||
/**
|
||||
* get local ip v4 or nil
|
||||
*
|
||||
* @return local ip v4 or nil
|
||||
*/
|
||||
+ (NSString *) getLocalIPv4
|
||||
{
|
||||
return [ESP_WifiUtil getIPAddress4];
|
||||
}
|
||||
|
||||
/**
|
||||
* get local ip v6 or nil
|
||||
*
|
||||
* @return local ip v6 or nil
|
||||
*/
|
||||
+ (NSString *) getLocalIPv6
|
||||
{
|
||||
return [ESP_WifiUtil getIpAddress6];
|
||||
}
|
||||
|
||||
+ (BOOL) isIPv4Addr:(NSString *)ipAddr
|
||||
{
|
||||
NSArray *ip4array = [ipAddr componentsSeparatedByString:@"."];
|
||||
return [ip4array count]==4;
|
||||
}
|
||||
|
||||
+ (BOOL) isIPv4PrivateAddr:(NSString *)ipAddr4
|
||||
{
|
||||
NSArray *ip4array = [ipAddr4 componentsSeparatedByString:@"."];
|
||||
Byte byte0 = [[ip4array objectAtIndex:0]intValue];
|
||||
Byte byte1 = [[ip4array objectAtIndex:1]intValue];
|
||||
// Byte byte2 = [[ip4array objectAtIndex:2]intValue];
|
||||
// Byte byte3 = [[ip4array objectAtIndex:3]intValue];
|
||||
|
||||
if (byte0==10) {
|
||||
// 10.0.0.0~10.255.255.255
|
||||
return YES;
|
||||
} else if (byte0==172&&16<=byte1&&byte1<=31) {
|
||||
// 172.16.0.0~172.31.255.255
|
||||
return YES;
|
||||
} else if (byte0==192&&byte1==168) {
|
||||
// 192.168.0.0~192.168.255.255
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
+ (NSData *) getLocalInetAddress4ByAddr:(NSString *) localInetAddr4
|
||||
{
|
||||
NSArray *ip4array = [localInetAddr4 componentsSeparatedByString:@"."];
|
||||
Byte byte0 = [[ip4array objectAtIndex:0]intValue];
|
||||
Byte byte1 = [[ip4array objectAtIndex:1]intValue];
|
||||
Byte byte2 = [[ip4array objectAtIndex:2]intValue];
|
||||
Byte byte3 = [[ip4array objectAtIndex:3]intValue];
|
||||
Byte bytes[] = {byte0,byte1,byte2,byte3};
|
||||
NSData *ip4data = [NSData dataWithBytes:bytes length:IP4_LEN];
|
||||
return ip4data;
|
||||
}
|
||||
|
||||
+ (NSData *) getLocalInetAddress6ByPort:(int) localPort
|
||||
{
|
||||
Byte lowPort = localPort & 0xff;
|
||||
Byte highPort = (localPort>>8) & 0xff;
|
||||
Byte bytes[] = {highPort,lowPort,0xff,0xff};
|
||||
NSData *ip6data = [NSData dataWithBytes:bytes length:IP4_LEN];
|
||||
return ip6data;
|
||||
}
|
||||
|
||||
+ (NSData *) parseInetAddrByData: (NSData *) inetAddrData andOffset: (int) offset andCount: (int) count
|
||||
{
|
||||
return [inetAddrData subdataWithRange:NSMakeRange(offset, count)];
|
||||
}
|
||||
|
||||
+ (NSString *) descriptionInetAddr4ByData: (NSData *) inetAddrData
|
||||
{
|
||||
// check whether inetAddrData is belong to IPv4
|
||||
if ([inetAddrData length]!=IP4_LEN) {
|
||||
return nil;
|
||||
}
|
||||
Byte inetAddrBytes[IP4_LEN];
|
||||
[inetAddrData getBytes:inetAddrBytes length:IP4_LEN];
|
||||
// hard coding
|
||||
return [NSString stringWithFormat:@"%d.%d.%d.%d",inetAddrBytes[0],inetAddrBytes[1],inetAddrBytes[2],inetAddrBytes[3]];
|
||||
}
|
||||
+ (NSString *) descriptionInetAddr6ByData: (NSData *) inetAddrData
|
||||
{
|
||||
// check whether inetAddrData is belong to IPv4
|
||||
if ([inetAddrData length]!=IP6_LEN) {
|
||||
return nil;
|
||||
}
|
||||
Byte inetAddrBytes[IP6_LEN];
|
||||
[inetAddrData getBytes:inetAddrBytes length:IP6_LEN];
|
||||
// hard coding
|
||||
return [NSString stringWithFormat:@"%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",inetAddrBytes[0],inetAddrBytes[1],inetAddrBytes[2],inetAddrBytes[3],inetAddrBytes[4],inetAddrBytes[5],inetAddrBytes[6],inetAddrBytes[7],inetAddrBytes[8],inetAddrBytes[9],inetAddrBytes[10],inetAddrBytes[11],inetAddrBytes[12],inetAddrBytes[13],inetAddrBytes[14],inetAddrBytes[15]];
|
||||
}
|
||||
|
||||
+ (NSData *) parseBssid2bytes: (NSString *) bssid
|
||||
{
|
||||
NSArray *bssidArray = [bssid componentsSeparatedByString:@":"];
|
||||
NSInteger size = [bssidArray count];
|
||||
Byte bssidBytes[size];
|
||||
for (NSInteger i = 0; i < size; i++) {
|
||||
NSString *bssidStr = [bssidArray objectAtIndex:i];
|
||||
bssidBytes[i] = strtoul([bssidStr UTF8String], 0, 16);
|
||||
}
|
||||
return [[NSData alloc]initWithBytes:bssidBytes length:size];
|
||||
}
|
||||
|
||||
+ (NSURLSessionConfiguration *) DEFAULT_SESSION_CONFIGURATION
|
||||
{
|
||||
static dispatch_once_t predicate;
|
||||
static NSURLSessionConfiguration *DEFAULT_SESSION_CONFIGURATION;
|
||||
dispatch_once(&predicate, ^{
|
||||
DEFAULT_SESSION_CONFIGURATION = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
});
|
||||
return DEFAULT_SESSION_CONFIGURATION;
|
||||
}
|
||||
|
||||
|
||||
+ (void) tryOpenNetworkPermission
|
||||
{
|
||||
// only ios 10.0 later required to try open network permission
|
||||
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
|
||||
NSURL *url = [NSURL URLWithString:@"https://8.8.8.8"];
|
||||
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:1000];
|
||||
|
||||
|
||||
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:[self DEFAULT_SESSION_CONFIGURATION] delegate:nil delegateQueue:[NSOperationQueue currentQueue]];
|
||||
[[urlSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){
|
||||
}] resume];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user