Шаги, которые я выполнил 1) Добавлена структура конфигурации системы и импортирован #import "systemconfiguration/scnetworkreachability.h", а затем добавлен ниже код для проверки подключения
BOOL hasLeadingNumberInString(NSString* s) {
if(s)
return [s length] && isnumber([s characterAtIndex:0]);
else
return NO;
}
-(BOOL)networkConnected: (NSString *)ipAdress {
SCNetworkReachabilityFlags flags = 0;
SCNetworkReachabilityRef netReachability;
BOOL retrievedFlags = NO;
// added the "if" and first part of if statement
//
if (hasLeadingNumberInString(ipAdress)) {
struct sockaddr_in the_addr;
memset((void *)&the_addr, 0, sizeof(the_addr));
the_addr.sin_family = AF_INET;
the_addr.sin_len = sizeof(the_addr);
const char* server_addr = [ipAdress UTF8String];
unsigned long ip_addr = inet_addr(server_addr);
the_addr.sin_addr.s_addr = ip_addr;
netReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr*)&the_addr);
} else {
netReachability = SCNetworkReachabilityCreateWithName(NULL, [ipAdress UTF8String]);
}
if (netReachability) {
retrievedFlags = SCNetworkReachabilityGetFlags(netReachability, &flags);
CFRelease(netReachability);
}
if (!retrievedFlags || !flags) {
return NO;
}
return YES;
}
- (void)checkconnectivity
{
if([self networkConnected:@"192.168.2.10" ])
NSLog(@"Connected");
else
NSLog(@"Not Connected");
}
Ради бога, он всегда возвращается подключенным.
метод 2, которому я следовал, я добавил AFnetworking с помощью cocopods. Я импортировал файл «AFNetworkReachabilityManager.h» и использовал managerforaddress, он всегда возвращает неизвестный
AFNetworkReachabilityManager *addressCheck=[AFNetworkReachabilityManager managerForAddress:@"192.168.3.10"];
[addressCheck startMonitoring];
[addressCheck setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];
NSLog(@"%hhd",addressCheck.reachable);
NSLog(@"%hhd",[addressCheck isReachable]);
NSString *str=[[NSString alloc]initWithString:[addressCheck localizedNetworkReachabilityStatusString]];
NSLog(@"%@",str);
NSLog(@"%@",addressCheck.localizedNetworkReachabilityStatusString);
}
Даже таким образом я не могу подключиться к определенному адресу. Есть ли способ получить это или это невозможно.
!flags
должно быть!(flags & kSCNetworkReachabilityFlagsReachable)
, верно? - person Droppy   schedule 25.07.2016