2010-11-01 2 views
0

Я использовал следующий код, чтобы проверить это ---
(запрос мой запрос)Как проверить, доступно ли соединение (iphone)?

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

if(theConnection) 
{ 
    nslog(@"connection is present"); 

} 
else 
{-------error message1------------- 
} 

, а затем в делегатов I ретранслировать на получение ответа при

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ 
-------error message2------------- 
} 

Я в настоящее время проверяя все на моем симуляторе ... и ... обнаруживая подключение к интернету, просто удалив мой интернет-кабель ...

но каждый раз, когда у меня была программа, у меня было только сообщение 2 ..... но оно приходит после 1 мин (время соединения более) ...

, но я хочу, чтобы проверить его в качестве минимального времени, насколько это возможно ....

+0

возможно дубликат [Как проверить наличие активного подключения к Интернету на iPhone SDK?] (HTTP: // StackOverflow .com/questions/1083701/how-to-check-for-the-active-internet-connection-on-iphone-sdk) –

ответ

2

Вы можете взять посмотрите на Reachability exaxmple, предоставленный Apple.

Если вы хотите, чтобы ваш NSURLConnection потерпеть неудачу раньше, вы должны указать тайм-аут в вашем NSURLRequest: requestWithURL:cachePolicy:timeoutInterval:

+0

нет, я не хочу, чтобы мой NSURLConnection не выполнялся раньше ... это создаст проблему в в тех случаях, когда подключение к интернету происходит медленно. Я хочу просто проверить, доступно ли подключение к Интернету ... если да, то тогда запрос должен отправить ... – Saawan

+0

Затем проверьте пример использования. Вы можете создать прокси-сервер, который отслеживает изменения в достижимости. Таким образом, вы всегда будете знать, существует ли соединение. Затем вы можете соответствующим образом адаптировать свой интерфейс (например, отключить кнопки, показать списки действий и т. Д., Если нет возможности подключения). –

3

Используйте этот метод:

- (BOOL) connectedToNetwork 
{ 
// Create zero addy 
struct sockaddr_in zeroAddress; 
bzero(&zeroAddress, sizeof(zeroAddress)); 
zeroAddress.sin_len = sizeof(zeroAddress); 
zeroAddress.sin_family = AF_INET; 

// Recover reachability flags 
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); 
SCNetworkReachabilityFlags flags; 

BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); 
CFRelease(defaultRouteReachability); 

if (!didRetrieveFlags) 
{ 
    printf("Error. Could not recover network reachability flags\n"); 
    return 0; 
} 

BOOL isReachable = flags & kSCNetworkFlagsReachable; 
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; 
return (isReachable && !needsConnection) ? YES : NO; 
} 
Смежные вопросы