Alcance: para la dirección IP local de LAN

Estoy intentando verificar la accesibilidad de un dispositivo en WIFI

He modificado el código del libro "Advanced IOS4 Programming" de Maher Ali para usar una dirección IP de la siguiente manera

- (BOOL) networkConnected: (NSString *) addr { SCNetworkReachabilityFlags flags = 0; SCNetworkReachabilityRef netReachability; BOOL retrievedFlags = NO; // added the "if" and first part of if statement // if (hasLeadingNumberInString(addr)) { struct sockaddr_in the_addr; memset((void *)&the_addr, 0, sizeof(the_addr)); the_addr.sin_family = AF_INET; the_addr.sin_port = htons(1001); const char* server_addr = [addr UTF8String]; unsigned long ip_addr = inet_addr(server_addr); the_addr.sin_addr.s_addr = ip_addr; netReachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (struct sockaddr*)&the_addr); } else { netReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [addr UTF8String]); } if (netReachability) { retrievedFlags = SCNetworkReachabilityGetFlags(netReachability, &flags); CFRelease(netReachability); } if (!retrievedFlags || !flags) { return NO; } return YES; } 

Pero siempre devuelve NO utilizando una dirección IP y un puerto que sé que puedo conectar (es decir, si omito esta verificación, todo va bien)

Estoy intentando conectarme al puerto "10.0.0.59" 1001 que puedo hacer

comstack, y he pisado (en un ipod) y está ejecutando la sección de socket del código.

netReachability se devuelve como cero.

Los encabezados relevantes incluidos son:

 #import "Reachability.h" #include <CFNetwork/CFSocketStream.h> #include <arpa/inet.h> 

¿Alguien puede ver lo que estoy haciendo mal?

Utilizo la Alcanzabilidad más nueva de Tony Million que hace que cosas como esta sean muy sencillas. Para hacer esto, podrías hacer algo como:

 if([[Reachability reachabilityForLocalWiFi] isReachable]) { // It's reachable on wifi } 

No estoy seguro de si esta ayuda, pero yo uso Reachability.h de Apple cada vez que quiero comprobar si la aplicación está conectada a Internet (o a cualquier IP interna)

aquí está mi código

 #import "Reachability.h" if([[Reachability shanetworkingReachability] internetConnectionStatus] == NotReachable) { UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for location finding to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [myAlert show]; [myAlert release]; }else{ // Do something }