2012-01-18 80 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可達(也是這個虛構的IP在我的代碼)... 我希望把路由器的IP在 'callAddress'。或路由器的名稱或類似的東西..如果用戶通過3G連接,則無法訪問。

回答

1

通過獲取本地IP地址(例如參見iPhone Obtaining IP Address When Connected Over 3G - 注意此解決方案也提供了Wi-Fi地址),您可以將其與您酒吧路由器的固定IP地址範圍進行比較,看看您是否在同一個網絡。

+0

作品!謝謝! 是否可以獲取網絡名稱? 通過IP地址和網絡名稱,比較會變得更安全一些。 – kerimrohs 2012-01-18 15:04:44

+0

「網絡名稱」是什麼意思?你是指WiFi的SSID還是你的意思是DNS名稱? 「安全」是什麼意思?如果您擔心有人欺騙您的WiFi網絡,那麼您需要研究一些比僅使用IP地址進行身份驗證更強大的功能。 – 2012-01-18 15:28:06

+0

1)我的意思是SSID! 它不需要100%安全,用戶沒有人會改變他的家庭網絡,以獲得從家裏訪問.. 但SSID會有點'更安全',因爲IP(我拿了前6個數字)可以像在家裏的ip一樣...通過隨機... 2)但你知道任何其他(簡單)的方式,這是安全的嗎? – kerimrohs 2012-01-18 17:19:58