2012-01-18 3 views
1

iPhone 앱에서 인터넷 연결을 확인하고 싶습니다.iOS : 라우터 IP에 연결할 수 있습니까?

휴대 전화가 wifi를 통해 연결되어 있고 wifi가 엄격한 라우터와 연결된 경우 앱에서 알아야합니다.

예 : 술집에서 음료를 주문하는 앱입니다. 사용자는 바의 네트워크에 연결된 경우에만 무언가를 주문할 수 있습니다.

- (IBAction)buttonCHECKNETWORK:(id)sender{ 

struct sockaddr_in callAddress; 
callAddress.sin_len = sizeof(callAddress); 
callAddress.sin_family = AF_INET; 
callAddress.sin_port = htons(24); 
callAddress.sin_addr.s_addr = inet_addr("152.465.456.975"); 

Reachability *hostReach = [Reachability reachabilityWithAddress:&callAddress]; 

NetworkStatus netStatus = [hostReach currentReachabilityStatus]; 

if (netStatus == NotReachable) 
{ 
    NSLog(@"IP NotReachable"); 
} 

if (netStatus == ReachableViaWiFi) 
{ 
    NSLog(@"IP ReachableViaWiFi"); 
} 

if (netStatus == ReachableViaWWAN) 
{ 
    NSLog(@"IP ReachableViaWWAN"); 
} } 

을 그러나 모든 IP는 ... 내가 'callAddress'에 라우터 IP를 설정하고 싶은 (내 코드에서이 가상 IP)에 도달 할 수 있습니다 :

나는 시도했다. 또는 라우터의 이름 또는 그와 비슷한 것입니다. 사용자가 3G를 통해 연결되어 있으면 연결할 수 없습니다.

답변

1

로컬 IP 주소를 얻음으로써 (예 : iPhone Obtaining IP Address When Connected Over 3G 참조 -이 솔루션은 Wi-Fi 주소도 제공함)이 값을 바의 라우터의 고정 IP 주소 범위와 비교하여 현재 위치에 있는지 확인할 수 있습니다 같은 네트워크.

+0

Works! 고맙습니다! 네트워크 이름도 가져올 수 있습니까? 비교는 IP 주소와 네트워크 이름으로 조금 더 안전해질 것입니다. – kerimrohs

+0

"네트워크 이름"은 무엇을 의미합니까? WiFi의 SSID를 의미합니까, 아니면 DNS 이름을 의미합니까? 그리고 "세이퍼"는 무엇을 의미합니까? WiFi 네트워크를 스푸핑하는 사람이 걱정된다면 인증을 위해 IP 주소를 사용하는 것보다 훨씬 강력한 것을 조사해야합니다. –

+0

1) 나는 SSID를 의미한다! 100 % 안전 할 필요는 없습니다. 사용자의 아무도 집에서 액세스 할 수 있도록 홈 네트워크를 변경하지 않습니다 .. SSID는 조금 더 '안전 할 것입니다'. 왜냐하면 ip (i는 처음 6 자리 숫자) 집에서 ip처럼 무작위로 ... 2)하지만 다른 안전한 방법을 알고 있습니까? 안전합니까? – kerimrohs

관련 문제