rjs*_*ing 19 iphone networking cocoa cocoa-touch objective-c
我需要ping在Cocoa/Objective-C中编写一个简单的方法.它还需要在iPhone上运行.
我发现了一个使用的例子,icmp这会在iPhone上运行吗?
我倾向于使用解决方案NSNetServices,这是一个好主意吗?
该方法只需要ping几次并返回平均值,如果主机关闭或无法访问,则返回-1.
Gen*_*ers 35
让我再试一次......这次登录,格式化更好;-)
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");
}
Run Code Online (Sandbox Code Playgroud)
注意:SystemConfiguration.framework是必需的
Chr*_*ris 32
我遇到了同样的问题,并最终围绕SimplePing编写了一个简单的包装器来实现这一点,写了一篇关于它的博客,并且在github上有一些代码,希望能帮助这里的人:
http://splinter.com.au/how-to-ping-a-server-in-objective-c-iphone
Zha*_*ami 13
您没有遗漏任何内容 - "Reachability"实际上并不测试目标域实际上是否可达,它只评估是否存在可以通过目标域访问的机器路径.只要您有一些出站连接(例如,活动的无线或有线连接)以及通向目标的路由配置,就SCNetworkReachability而言,该站点是"可达的".
Vad*_*dim -8
下面的代码似乎是同步工作的:
const char *hostName = [@"stackoverflow.com"
cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkConnectionFlags flags = 0;
if (SCNetworkCheckReachabilityByName(hostName, &flags) && flags > 0) {
NSLog(@"Host is reachable: %d", flags);
}
else {
NSLog(@"Host is unreachable");
}
Run Code Online (Sandbox Code Playgroud)
注:SystemConfiguration.framework为必填项
| 归档时间: |
|
| 查看次数: |
36786 次 |
| 最近记录: |