2012-01-18 17 views
1

iPhoneアプリでインターネット接続を確認したいと思います。iOS:ルータIP到達可能?

アプリは電話が無線LANを介して接続されている場合は、知っておく必要があり、もし無線LANは、厳格なルータに接続されています。例えば

:バーでドリンクを注文するアプリです。ユーザーは、バーのネットワークに接続している場合にのみ、何かを注文することができます。

私が試した:私は 'callAddress' にルータのIPを入れたい ...

- (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)到達可能です。ルータの名前やそのようなもの。ユーザーが3G経由で接続されていると到達できません。

答えて

1

ローカルIPアドレスを取得すると(例えば、iPhone Obtaining IP Address When Connected Over 3Gを参照してください)、このソリューションはWi-Fiアドレスも提供していますので、これをバーのルータの固定IPアドレス範囲と比較して、同じネットワーク。

+0

Works!ありがとうございました! ネットワーク名も取得できますか? 比較はIPアドレスとネットワーク名で少し安全になります。 – kerimrohs

+0

「ネットワーク名」とはどういう意味ですか?あなたはWiFiのSSIDを意味しますか、それともDNS名を意味しますか?そして、「Safer」はどういう意味ですか?あなたのWiFiネットワークを偽装する人が心配している場合は、認証にIPアドレスを使用するよりも堅牢なものを検討する必要があります。 –

+0

1)私はSSIDを意味する!私は最初の6つの数字を取った(IPので 、「安全な」それは ..ユーザーの誰もが自宅からのアクセスを取得するために彼の家ネットワークを変更しません、100%安全である必要はありませんが、SSIDは少しだろう)家庭のIPのように同じである可能性があります... 2)しかし、他の(簡単な)方法を知っていますか?これは安全ですか? – kerimrohs

関連する問題