¿Cómo puedo detectar la disponibilidad real de la networking?

cuando el iPhone se conecta a un enrutador inalámbrico y ese enrutador no está conectado a Internet? Necesito mostrar un post de error que diga "verificar su connection a Internet". Probé el código de muestra de Reachability. pero sin suerte, http://developer.apple.com/library/ios/#samplecode/Reachability/Listings/ReadMe_txt.html

cuando deshabilito el WIFI en el teléfono está funcionando bien, probé el código de muestra Comprobación de conectividad de Internet en el objective C "isDataSourceAvailable", incluso si no funciona, ¿puede alguien ayudarme a solucionar este problema, realmente appriciate.

Puedes hacer algo como esto:

+ (BOOL) pingServer { NSURL *url = [NSURL URLWithString:@"http://some-url-that-has-to-work/"]; NSURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSHTTPURLResponse *response = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL]; return (response != nil); } 

Esta es una request síncrona, de modo que bloqueará el hilo actual. Puede hacer la verificación de toda la networking en un subprocess de background, de modo que el locking no sea importante o puede enviar la request de forma asíncrona. También es posible que desee establecer el método HTTP en HEAD, para que no descargue todo el recurso.

Te recomiendo que hagas lo mismo que Microsoft, y para ser realmente malvado, puedes incluso usar sus serveres, ya que probablemente se asegurarán de que estén en línea en el futuro previsible.

Buscan un nombre de host y luego acceden a un file muy pequeño en un server web.

Consulte la misma pregunta en serverfault (desde una perspectiva que no sea de progtwigción, por supuesto).

Básicamente busca la dirección IP de un nombre de host (en ese ejemplo "dns.msftncsi.com"), luego accede a la URL, por ejemplo, http://msftncsi.com/ncsi.txt . Esto se puede hacer con progtwigción de socket simple si lo desea, no es necesario HTTP real.

Abra un socket para el puerto 80, en la IP que encontró al search el nombre de host. Envíe una cadena al zócalo así:

 "GET /msftncsi.com/ncsi.txt HTTP/1.1\nHost: msftncsi.com:80\n\n" 

Luego espera a que regrese algo. Si algo regresa, incluso un solo byte, significa que tiene acceso a Internet.

O al less el acceso a este server, que en este ejemplo es Microsoft.

https://github.com/adib/asi-http-request/blob/master/External/Reachability/Reachability.h

Esta es una parte del proyecto ASI HTTPRequest en git. Extiende el ejemplo de Apple y aparentemente es lo suficientemente bueno para bastantes aplicaciones en la tienda (ver el muro de ASI de quién está usando: http://allseeing-i.com/ASIHTTPRequest/Who-is-using-it )

Cualquiera, sé que ya se aceptó una respuesta, pero solo para reference adicional.