2012-09-20 4 views
0

여기 내가 토론에 대한 매우 흥미로운 주제를 가지고 있거나 더 나은 접근 방법에 대한 제안이 필요하다고 말할 수 있습니다.먼저 확인해야 할 사항 - hostReachability 또는 netReachability?

여기 내 코드

내 코드에서
+ (BOOL) isConnected 
{ 
    BOOL flag = TRUE; 
    if (![self isHostReachable]) 
    { 
      flag = FALSE; 
      NSString* alertTitle= @""; 
      NSString* alertMessage= @""; 

      if (![self isInternetReachable]) 
      { 
       alertTitle = @"Network unavailable"; 
       alertMessage = @"We can't connect to the Internet. Check your   settings/connection."; 
      } 
      else 
      { 
       alertTitle = @"Server not responding"; 
       alertMessage = @"Server not responding at the moment. Please try again later. Sorry for inconvenience"; 
      } 
      UIAlertView *alert=[[UIAlertView alloc] initWithTitle:alertTitle 
                message:alertMessage 
               delegate:self 
             cancelButtonTitle:@"Close" 
             otherButtonTitles:nil]; 

      [alert show]; 
    } 
    return flag; 
} 

+ (BOOL) isInternetReachable 
{ 
    Reachability *netReachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus netSat = [netReachability currentReachabilityStatus]; 
    return (!(netSat == NotReachable)); 
} 

+ (BOOL) isHostReachable 
{ 
    Reachability *hostReachability = [Reachability reachabilityWithHostname: [Connection returnHostName]]; 
    NetworkStatus netSat = [hostReachability currentReachabilityStatus]; 
    return (!(netSat == NotReachable)); 
} 

, 내가 데이터를 내 서버를 요청하기 전에 연결 상태를 확인하기 위해 "는, isConnected"메소드를 호출하는 데 사용됩니다.

이 메서드에서는 먼저 hostReachability를 확인합니다. 이 작업을 수행하는 내 생각은 계산 시간을 절약하는 것입니다.

  • hostReachability가 true를 반환하면 netConnectivity도 true임을 나타냅니다 (확인할 필요 없음). 그래서 여기서 우리는 하나의 계산으로 끝난다.
  • hostReachability가 false를 반환하면 net 연결에 대한 책임이 있는지 확인합니다. 따라서 두 가지 계산.

하지만 일반적으로 코드가 먼저 netConnectivity를 확인하고 ok 인 경우 hostReachability를 확인합니다.

그래서 대부분의 경우 두 가지 계산이 수행되는 방식과 대조됩니다.

더 나은 방법이라고 생각하는 것이 있으십니까?

답변

1

잘 netConnectivity는 100 가지 이유 중 하나 때문에 네트워크가 위치에 있고 다운되지 않았는지 확인하면 호스트가 어떤 문제로 인해 서버가 다운 될 수 있음을 확인합니다.

네트워크에 연결이 실패한 것으로 확인되면 먼저 호스트를 확인하는 것을 배제합니다. 그 반대도 사실이 아니지만 .. 당신에게 설명으로 유용했기를 바랍니다. 건배 !!