如何检查本地WiFi网络中的设备是否已连接使用它的IP地址?

时间:2017-07-03 12:10:52

标签: ios objective-c iphone swift

我在我的iOS应用程序中使用MMLANScanner库。它向我展示了连接到本地WiFi路由器的所有设备以及之前连接到本地WiFi路由器的设备。

我如何判断我所获得的设备IP目前是否已连接到我的本地WiFi路由器?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

使用Apple Reachability example这里有一些代码来检查设备的连接性。

#import "Reachability.h"

@interface ViewController : UIViewController 
{
     BOOL isInternetConnectionAvailable;
}
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
//--Reachability--
    /*
     Observe the kNetworkReachabilityChangedNotification. When that notification is posted, the method reachabilityChanged will be called.
     */
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

    self.internetReachability = [Reachability reachabilityForInternetConnection];
    [self.internetReachability startNotifier];
    [self updateInterfaceWithReachability:self.internetReachability];
    //--+--//


}
#pragma mark Reachability
/*!
 * Called by Reachability whenever status changes.
 */
- (void) reachabilityChanged:(NSNotification *)note
{
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
    [self updateInterfaceWithReachability:curReach];
}


- (void)updateInterfaceWithReachability:(Reachability *)reachability
{

    if (reachability == self.internetReachability)
    {
        NetworkStatus netStatus = [reachability currentReachabilityStatus];
        BOOL connectionRequired = [reachability connectionRequired];
        NSString* statusString = @"";

        //
        UIAlertController * connectivityAlert = [UIAlertController alertControllerWithTitle:@"Connectivity" message:[NSString stringWithFormat:@"Status:%@",statusString] preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction * ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
        [connectivityAlert addAction:ok];
        //

        switch (netStatus)
        {
            case NotReachable:        {
                statusString = NSLocalizedString(@"Access Not Available", @"Text field text for access is not available");
                /*
                 Minor interface detail- connectionRequired may return YES even when the host is unreachable. We cover that up here...
                 */
                connectionRequired = NO;

                connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
                [self presentViewController:connectivityAlert animated:YES completion:nil];
                isInternetConnectionAvailable = NO;
                break;
            }

            case ReachableViaWWAN:        {
                statusString = NSLocalizedString(@"Reachable WWAN", @"");

                connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];

                isInternetConnectionAvailable = YES;
                break;
            }
            case ReachableViaWiFi:        {
                statusString= NSLocalizedString(@"Reachable WiFi", @"");

                connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];

                isInternetConnectionAvailable = YES;
                break;
            }
        }

        if (connectionRequired)
        {
            NSString *connectionRequiredFormatString = NSLocalizedString(@"%@, Connection Required", @"Concatenation of status string with connection requirement");
            statusString= [NSString stringWithFormat:connectionRequiredFormatString, statusString];

            connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
            isInternetConnectionAvailable = NO;
            [self presentViewController:connectivityAlert animated:YES completion:nil];
        }
    }

}
@end