Что нужно проверить первым - 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 также существует (нет необходимости проверять). Итак, здесь мы закончили с одним вычислением.
  • Если hostReachability возвращает false, то я проверяю, отвечает ли это за сетевое соединение. Отсюда два вычисления.

Но обычно видно, что код сначала проверяет netConnectivity, если все в порядке, а затем проверяет hostReachability.

Так что в большинстве случаев два вычисления, это в отличие от моего способа добиться цели.

Пожалуйста, предложите, какой из них вы считаете лучшим подходом?

1 ответ

Решение

Хорошо, что netConnectivity будет проверять, находится ли сеть в рабочем состоянии и не отключена ли по какой-либо из 100 причин, тогда проверяется, что хост доступен, так как сервер может быть недоступен из-за какой-то проблемы.

Если сеть проверена как сбойное соединение, то в первую очередь исключается проверка хоста. наоборот, это неправда.. Я надеюсь, что это было полезным для вас. Ура!!

Другие вопросы по тегам