CFNetwork框架详细解析(八) —— CFNetwork编程指导之使用网络诊断(七)

版本记录

版本号 时间
V1.0 2018.06.09

前言

CFNetwork框架访问网络服务并处理网络配置的变化。 建立在网络协议抽象的基础上,可以简化诸如使用BSD套接字,管理HTTP和FTP服务器以及管理Bonjour服务等任务。接下来几篇我们就一起看一下这个框架。感兴趣的可以看上面几篇文章。
1. CFNetwork框架详细解析(一) —— 基本概览
2. CFNetwork框架详细解析(二) —— CFNetwork编程指导之简介(一)
3. CFNetwork框架详细解析(三) —— CFNetwork编程指导之CFNetwork概念(二)
4. CFNetwork框架详细解析(四) —— CFNetwork编程指导之流的处理(三)
5. CFNetwork框架详细解析(五) —— CFNetwork编程指导之与HTTP服务器通信(四)
6. CFNetwork框架详细解析(六) —— CFNetwork编程指导之与验证HTTP服务器通信(五)
7. CFNetwork框架详细解析(七) —— CFNetwork编程指导之使用FTP服务器(六)

Using Network Diagnostics - 使用网络诊断

在许多基于网络的应用程序中,可能会出现与您的应用程序无关的基于网络的错误。但是,大多数用户可能不知道应用程序失败的原因。 CFNetDiagnostics API使您能够快速简便地帮助用户解决网络问题,而您的工作只需很少的工作。

如果您的应用程序正在使用CFStream对象,则通过调用函数CFNetDiagnosticCreateWithStreams来创建网络诊断参考(CFNetDiagnosticRef)CFNetDiagnosticCreateWithStreams将分配器,读取流和写入流作为参数。如果您的应用程序仅使用读取流或写入流,则应将未使用的参数设置为NULL

如果不存在流,您也可以直接从URL创建网络诊断参考。为此,调用CFNetDiagnosticCreateWithURL函数并将其传递给分配器,并将该URL作为CFURLRef。它将返回一个网络诊断参考供您使用。

要通过Network Diagnostic Assistant来诊断问题,请调用CFNetDiagnosticDiagnoseProblemInteractively函数并传递网络诊断参考。Listing 6-1显示了如何在运行循环中的流中使用CFNetDiagnostics

Listing 6-1  Using the CFNetDiagnostics API when a stream error occurs

    case kCFStreamEventErrorOccurred:
        CFNetDiagnosticRef diagRef =
            CFNetDiagnosticCreateWithStreams(NULL, stream, NULL);
        (void)CFNetDiagnosticDiagnoseProblemInteractively(diagRef);
        CFStreamError error = CFReadStreamGetError(stream);
        reportError(error);
        CFReadStreamClose(stream);
        CFRelease(stream);
        break;

CFNetworkDiagnostics还使您能够检索问题的状态,而不是使用Network Diagnostic Assistant。 这是通过调用CFNetDiagnosticCopyNetworkStatusPassively来完成的,它返回一个常量值,如kCFNetDiagnosticConnectionUpkCFNetDiagnosticConnectionIndeterminate

后记

本篇主要讲述了网络诊断相关,感兴趣的给个赞或者关注~~~~

CFNetwork框架详细解析(八) —— CFNetwork编程指导之使用网络诊断(七)_第1张图片

你可能感兴趣的:(CFNetwork框架详细解析(八) —— CFNetwork编程指导之使用网络诊断(七))