2013-02-14 1 views
1

Этого случая (NSLog (@ «шлюз к хост-серверу работает.»); всегда работает с какой-то причинойдостижимость хозяин не достижим независимо от того, какого хоста я использую

Я использую Apple, достижимость. класс за сценой. я попытался вставить другие хосты, но не повезло, пожалуйста, не поможет.

Спасибо заранее.

Вот код

@implementation ConnectionManager 
@synthesize internetActive, hostActive; 

-(id)init { 
self = [super init]; 
if(self) { 

} 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:@"NetworkReachabilityChangedNotification" object:nil]; 

internetReachable = [Reachability reachabilityForInternetConnection]; 
[internetReachable startNotifier]; 

hostReachable = [Reachability reachabilityWithHostName:@"www.google.com"]; 
[hostReachable startNotifier]; 



return self; 
} 

- (void) checkNetworkStatus:(NSNotification *)notice 
{ 
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; 
switch (internetStatus) 

{ 
    case NotReachable: 
    { 
     NSLog(@"The internet is down."); 
     self.internetActive = NO; 

     break; 

    } 
    case ReachableViaWiFi: 
    { 
     NSLog(@"The internet is working via WIFI."); 
     self.internetActive = YES; 

     break; 

    } 
    case ReachableViaWWAN: 
    { 
     NSLog(@"The internet is working via WWAN."); 
     self.internetActive = YES; 

     break; 

    } 
} 

NetworkStatus hostStatus = [hostReachable currentReachabilityStatus]; 
switch (hostStatus) 

{ 
    case NotReachable: 
    { 
     NSLog(@"A gateway to the host server is down."); 
     self.hostActive = NO; 

     break; 

    } 
    case ReachableViaWiFi: 
    { 
     NSLog(@"A gateway to the host server is working via WIFI."); 
     self.hostActive = YES; 

     break; 

    } 
    case ReachableViaWWAN: 
    { 
     NSLog(@"A gateway to the host server is working via WWAN."); 
     self.hostActive = YES; 

     break; 

    } 
} 

} 
+0

вы можете подключиться к Интернету в других приложениях? У вас действительно есть возможность подключения? – Bergasms

+2

Изменить '[Достижимость достижимостиWithHostName: @" www.google.com "];' на '[Достижимость достижимостиWithHostName: @" http://www.google.com "];' и проверить. – iDev

+0

www.google.com верен. Использование http: // никогда не работает. Нашел некоторый код в приложениях, над которыми я работал, с http: // и никогда не показывал хост как доступный. Когда было изменено только на www.google.com, хост стал доступен, но только до тех пор, пока сеть не снизилась (компьютер будет спать). После этого, всякий раз, когда сеть снова появляется, хост всегда выключается. Придется перезапустить Симулятор, чтобы он снова работал. Я думаю, что симулятор (Xcode 6.2) имеет внутренние проблемы, и я всегда должен перезапустить процесс, чтобы восстановить подключение к Интернету после пробуждения. Всегда ошибка 1005 до тех пор. Никаких проблем с реальным устройством. – ghr

ответ

0

Поскольку вы не упомянули о internetReachable с той же ошибкой, я предполагаю, что вы можете подключиться к Интернету, и эта часть работает нормально. Для hostReachable части, вы можете попытаться изменить его, как:

Изменить

[Reachability reachabilityWithHostName:@"www.google.com"]; 

в

[Reachability reachabilityWithHostName:@"http://www.google.com"]; 
+0

Да, вы правильно работаете в Интернете, все равно я уже пробовал с «http: //» и без того же. , но спасибо в любом случае. – Blacky

+0

Как насчет 'google.com'? Тогда это работало? Я только что проверил в более раннем проекте, над которым работал, и я использовал только что-то подобное. – iDev

+0

Я пробовал все, о чем я могу думать, я даже пытался - (BOOL) checkResourceIsReachableAndReturnError: (NSError **) error он возвращает «НЕТ», а также ..: \ – Blacky

Смежные вопросы