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

后记

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容