Ответ Джин Майерс опубликовал работы, используя "SCNetworkReachabilityCreateWithName" для меня - но только в симуляторе. На моем устройстве (iPod w/OS 2.2.1) он всегда возвращает «Хост доступен» даже для бессмысленных адресов, таких как «zzz».
Я что-то не понимаю? Благодарю.
Вот мой код на всякий случай:
От How to write a simple Ping method in Cocoa/Objective-C
- (IBAction) TestReachability:(id)sender
{
bool success = false;
const char *host_name = [ipAddressText.textcStringUsingEncoding:NSASCIIStringEncoding];
NSString *imageConnectionSuccess = @"Connected.png";
NSString *imageConnectionFailed = @"NotConnected.png";
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
bool isAvailable = success && (flags & kSCNetworkFlagsReachable) &&
!(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable)
{
NSLog([NSString stringWithFormat: @"'%s' is reachable, flags: %x", host_name, flags]);
[imageView setImage: [UIImage imageNamed:imageConnectionSuccess]];
}
else
{
NSLog([NSString stringWithFormat: @"'%s' is not reachable", host_name]);
[imageView setImage: [UIImage imageNamed:imageConnectionFailed]];
}
}
К сожалению , SCNetworkCheckReachabilityByName теперь устарела. –
8 голосов и + бонусы за код, который полностью не делает того, о чем был вопрос, т. Е. Ping/traceroute, но в основном это поиск DNS. – bestsss
Код не только устарел, но и ищет DNS –