pingManager.m 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // pingManager.m
  3. // Private-X
  4. //
  5. // Created by xd h on 2024/9/6.
  6. //
  7. #import "pingManager.h"
  8. #import "WHPingTester.h"
  9. @interface pingManager ()<WHPingDelegate>
  10. {
  11. WHPingTester *whPingTester;
  12. }
  13. @end
  14. @implementation pingManager
  15. + (instancetype)shareManager {
  16. static pingManager *_instance;
  17. static dispatch_once_t onceToken;
  18. dispatch_once(&onceToken, ^{
  19. _instance = [[self alloc] init];
  20. });
  21. return _instance;
  22. }
  23. - (instancetype)init {
  24. if (self = [super init]) {
  25. //[self registeNotification];
  26. }
  27. return self;
  28. }
  29. #pragma mark ---ping-----站点 判断是否是局域网
  30. - (void)startPingDeviceIpFun
  31. {
  32. NSString *roomInternetIp = ksharedAppDelegate.DeviceThirdIdMod.data.ip;
  33. //roomInternetIp = @"www.baidu.com";
  34. if(!roomInternetIp || roomInternetIp.length < 7){
  35. self.isPingOk = NO;
  36. return;
  37. }
  38. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus != AFNetworkReachabilityStatusReachableViaWiFi)
  39. {//
  40. HLog(@"非wifi情况 不用ping肯定不是内网")
  41. self.isPingOk = NO;
  42. return;
  43. }
  44. if (self->whPingTester)
  45. {
  46. [self->whPingTester stopPing];
  47. self->whPingTester = nil;
  48. }
  49. self->whPingTester = [[WHPingTester alloc] initWithHostName:roomInternetIp];
  50. self->whPingTester.delegate = self;
  51. //self->whPingTester.countdownTime = 1; //1秒ping一次
  52. [self->whPingTester startPing];
  53. /// 启动定时器监听 10秒后 whPingTester的状态
  54. KWeakSelf
  55. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  56. if(self->whPingTester){
  57. [weakSelf didGetPingStateIsOK:NO];
  58. }
  59. });
  60. }
  61. #pragma mark ---ping---- 代理回调
  62. - (void)didPingSucccessWithTime:(float)time withError:(NSError*) error
  63. {
  64. HLog(@"time:%f \n error: %@",time,error)
  65. //if(error.code == 111 || time > 1000) //超时或者延时超过100ms,就要记录数据
  66. if(error != nil)
  67. {
  68. [self didGetPingStateIsOK:NO];
  69. }
  70. else if(time > 0){
  71. [self didGetPingStateIsOK:YES];
  72. //test code
  73. //[self didGetPingStateIsOK:NO];
  74. }
  75. }
  76. - (void)didPingfialewithError:(NSError*)error
  77. {
  78. HLog(@" error error: %@",error)
  79. [self didGetPingStateIsOK:NO];
  80. }
  81. -(void)didGetPingStateIsOK:(BOOL)isOk
  82. {
  83. self.isPingOk = isOk;
  84. [self->whPingTester stopPing];
  85. self->whPingTester = nil;
  86. }
  87. @end