当前位置:  开发笔记 > IOS > 正文

如何在Cocoa/Objective-C中编写一个简单的Ping方法

如何解决《如何在Cocoa/Objective-C中编写一个简单的Ping方法》经验,为你挑选了4个好方法。

我需要ping在Cocoa/Objective-C中编写一个简单的方法.它还需要在iPhone上运行.

我发现了一个使用的例子,icmp这会在iPhone上运行吗?

我倾向于使用解决方案NSNetServices,这是一个好主意吗?

该方法只需要ping几次并返回平均值,如果主机关闭或无法访问,则返回-1.



1> Gene Myers..:

让我再试一次......这次登录,格式化更好;-)

StreamSCNetworkCheckReachabilityByName已弃用,不适用于iPhone.

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");
}

注意:SystemConfiguration.framework是必需的




2> Chris..:

我遇到了同样的问题,并最终围绕SimplePing编写了一个简单的包装器来实现这一点,写了一篇关于它的博客,并且在github上有一些代码,希望能帮助这里的人:

http://splinter.com.au/how-to-ping-a-server-in-objective-c-iphone


提供一个实际回答问题的解决方案(与人们似乎喜欢但完全没有解决问题的所有这些无用的可达性东西相比!).谢谢!

3> Zhami..:

您没有遗漏任何内容 - "Reachability"实际上并不测试目标域实际上是否可达,它只评估是否存在可以通过目标域访问的机器路径.只要您有一些出站连接(例如,活动的无线或有线连接)以及通向目标的路由配置,就SCNetworkReachability而言,该站点是"可达的".



4> Monobono..:

由于您没有root访问权限,因此在iPhone上进行Ping操作与在其他平台上有所不同.请参阅Apple的此示例代码.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有