我需要写一个简单的ping
Cocoa/Objective-C 中的方法。它还需要在 iPhone 上运行。
我找到了一个使用的例子icmp
,这适用于 iPhone 吗?
我倾向于使用解决方案NSNetServices
, 这是一个好主意吗?
该方法只需要ping
几次并返回平均值,如果主机已关闭或无法访问,则返回 -1。
注意-我会推荐下面克里斯的解决方案,它实际上直接回答了所提出的问题。 12年前的这篇文章是对原作者赞成答案的回应,对此我有更好的解决方案。由于作者赞成上面使用可达性的答案,我认为他实际上对可达性比实际发送 ping 更感兴趣,因此我的答案。在否决这个答案之前请考虑这一点。
StreamSCNetworkCheckReachabilityByName 已弃用,并且不适用于 iPhone。
注意:需要 SystemConfiguration.framework
bool success = false;
const char *host_name = [@"stackoverflow.com"
cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
//prevents memory leak per Carlos Guzman's comment
CFRelease(reachability);
bool isAvailable = success && (flags & kSCNetworkFlagsReachable) &&
!(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Host is reachable: %d", flags);
}else{
NSLog(@"Host is unreachable");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)