首页 > 代码库 > 使用网络诊断(Using Network Diagnostics)
使用网络诊断(Using Network Diagnostics)
在许多基于网络的应用中,会发生基于网络的错误,这些错误与你的应用无关。然而,大多数用户可能不知道为什么应用失败。CFNetDiagnostics API为你提供一种快速而简单的方法来帮助用户解决网络问题。
如果你的应用使用一个CFStream 对象,然后调用CFNetDiagnosticCreateWithStreams函数创建一个网络诊断引用(CFNetDiagnosticRef) 。CFNetDiagnosticCreateWithStreams有一个分配器,读取流和写入流作为参数。如果你的应用只使用读取流或写入流,未使用的参数设置为NULL。
如果不存在流,你还可以直接从URL创建一个网络诊断引用。要做到这一点,调用CFNetDiagnosticCreateWithURL 函数,并传递一个分配器,URL到CFURLRef。它将返回一个网络诊断引用供你使用。
为了通过网络诊断助手诊断问题,调用CFNetDiagnosticDiagnoseProblemInteractively 函数并传递网络诊断引用。清单6-1展示了如何使用CFNetDiagnostics 诊断在运行循环上实现的流。
清单6-1 当发生流错误时使用CFNetDiagnostics API
case kCFStreamEventErrorOccurred: CFNetDiagnosticRef diagRef = CFNetDiagnosticCreateWithStreams(NULL, stream, NULL); (void)CFNetDiagnosticDiagnoseProblemInteractively(diagRef); CFStreamError error = CFReadStreamGetError(stream); reportError(error); CFReadStreamClose(stream); CFRelease(stream); break;
CFNetworkDiagnostics 同样可以检索问题的状态,而不是使用网络诊断助手。通过调用CFNetDiagnosticCopyNetworkStatusPassively,便可以完成。该函数返回一个常数例如kCFNetDiagnosticConnectionUp 或kCFNetDiagnosticConnectionIndeterminate。
官方原文地址:
https://developer.apple.com/library/ios/documentation/Networking/Conceptual/CFNetwork/UsingNetworkDiagnostics/UsingNetworkDiagnostics.html#//apple_ref/doc/uid/TP30001132-CH7-SW1
使用网络诊断(Using Network Diagnostics)