1

IP アドレスがローカル ネットワークにあるかどうかを知りたいのですが、objective-c(Xcode) プログラムを使用していません。しかし、問題は、すべての IP アドレスについて (ネットワーク内になくても)、結果が成功することです。これがコードです。IPアドレスがローカルネットワークに正しくあるかどうかを確認する方法を教えてください。

            bool success = false;
            const char *host_name = [@"192.168.0.115" cStringUsingEncoding:NSASCIIStringEncoding];

            SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
                                                                                        host_name);
            SCNetworkReachabilityFlags flags;
            success = SCNetworkReachabilityGetFlags(reachability, &flags);
            bool isAvailable = success && (flags & kSCNetworkFlagsReachable) &&
            !(flags & kSCNetworkFlagsConnectionRequired);
            if (isAvailable)
            {
              //success
              //connect to IP address                      

            }
            else
            {
               //Not success
            }
4

1 に答える 1

1

このコードを使用

Reachability* reachability = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain]; // does not work with local IP, ARC is not used.
NetworkStatus netStatus = [reachability currentReachabilityStatus];

netStatusステータスを与えます。

アップデート

Reachability reachabilityWithHostName:アドレスを解決できないため、ローカル IP では機能しません。したがって、このソリューションは質問に答えません。ただし、以下のコメントで @Kerberos から引用されているように、このARC 対応ライブラリを使用して、ローカル IP アドレスとの接続を確認できます。

于 2012-09-24T06:43:35.317 に答える