// // pingManager.m // Private-X // // Created by xd h on 2024/9/6. // #import "pingManager.h" #import "WHPingTester.h" @interface pingManager () { WHPingTester *whPingTester; } @end @implementation pingManager + (instancetype)shareManager { static pingManager *_instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [[self alloc] init]; }); return _instance; } - (instancetype)init { if (self = [super init]) { //[self registeNotification]; } return self; } #pragma mark ---ping-----站点 判断是否是局域网 - (void)startPingDeviceIpFun { NSString *roomInternetIp = ksharedAppDelegate.DeviceThirdIdMod.data.ip; //roomInternetIp = @"www.baidu.com"; if(!roomInternetIp || roomInternetIp.length < 7){ self.isPingOk = NO; return; } if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus != AFNetworkReachabilityStatusReachableViaWiFi) {// HLog(@"非wifi情况 不用ping肯定不是内网") self.isPingOk = NO; return; } if (self->whPingTester) { [self->whPingTester stopPing]; self->whPingTester = nil; } self->whPingTester = [[WHPingTester alloc] initWithHostName:roomInternetIp]; self->whPingTester.delegate = self; //self->whPingTester.countdownTime = 1; //1秒ping一次 [self->whPingTester startPing]; /// 启动定时器监听 10秒后 whPingTester的状态 KWeakSelf dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ if(self->whPingTester){ [weakSelf didGetPingStateIsOK:NO]; } }); } #pragma mark ---ping---- 代理回调 - (void)didPingSucccessWithTime:(float)time withError:(NSError*) error { HLog(@"time:%f \n error: %@",time,error) //if(error.code == 111 || time > 1000) //超时或者延时超过100ms,就要记录数据 if(error != nil) { [self didGetPingStateIsOK:NO]; } else if(time > 0){ [self didGetPingStateIsOK:YES]; //test code //[self didGetPingStateIsOK:NO]; } } - (void)didPingfialewithError:(NSError*)error { HLog(@" error error: %@",error) [self didGetPingStateIsOK:NO]; } -(void)didGetPingStateIsOK:(BOOL)isOk { self.isPingOk = isOk; [self->whPingTester stopPing]; self->whPingTester = nil; } @end