[英]How to check whether a device in local WiFi network is connected or not using it's IP address?
I am using MMLANScanner library into my iOS application. 我在我的iOS应用程序中使用了MMLANScanner库。 It's showing me all the devices that are connected to my Local WiFi Router along with the devices that was previously connected to my Local WiFi Router.
它向我显示了连接到本地WiFi路由器的所有设备以及以前连接到本地WiFi路由器的设备。
How I can make decision whether the device IP that I am getting is presently connected to my Local WiFi Router? 我如何确定当前获取的设备IP是否已连接到本地WiFi路由器?
You can either use the apple 'Reachability' or by using simple ping. 您可以使用苹果的“可达性”,也可以使用简单的ping。 Following are the links to both projects.
以下是两个项目的链接。
[Simple Ping] https://developer.apple.com/library/content/samplecode/SimplePing/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000716-Intro-DontLinkElementID_2 [简单Ping] https://developer.apple.com/library/content/samplecode/SimplePing/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000716-Intro-DontLinkElementID_2
[Reachability] https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html [可达到性] https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html
Using Apple's Reachability example here is some code to check the connectivity of a device. 使用Apple的Reachability示例,这里是一些代码来检查设备的连接性。
#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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.