Tag - CFNetwork

2016

CFNetwork 编程指南之七: 使用网络诊断(Using Network Diagnostics)

#使用网络诊断

在许多基于网络的应用中,会发生基于网络的错误,这些错误与你的应用无关。然而,大多数用户可能不知道为什么应用失败。CFNetDiagnostics API为你提供一种快速而简单的方法来帮助用户解决网络问题。

如果你的应用使用一个CFStream 对象,然后调用CFNetDiagnosticCreateWithStreams函数创建一个网络诊断引用(CFNetDiagnosticRef) 。CFNetDiagnosticCreateWithStreams有一个分配器,读取流和写入流作为参数。如果你的应用只使用读取流或写入流,未使用的参数设置为NULL。

如果不存在流,你还可以直接从URL创建一个网络诊断引用。要做到这一点,调用CFNetDiagnosticCreateWithURL 函数,并传递一个分配器,URL到CFURLRef。它将返回一个网络诊断引用供你使用。

为了通过网络诊断助手诊断问题,调用CFNetDiagnosticDiagnoseProblemInteractively 函数并传递网络诊断引用。列表6-1展示了如何使用CFNetDiagnostics 诊断在运行循环上实现的流。

列表6-1 当发生流错误时使用CFNetDiagnostics API

1
2
3
4
5
6
7
8
9
10
11
case kCFStreamEventErrorOccurred: 

CFNetDiagnosticRef diagRef =
CFNetDiagnosticCreateWithStreams(NULL, stream, NULL);

(void)CFNetDiagnosticDiagnoseProblemInteractively(diagRef);
CFStreamError error = CFReadStreamGetError(stream);
reportError(error);
CFReadStreamClose(stream);
CFRelease(stream);
break;

8月 10 · 1 min

CFNetwork 编程指南之六: 使用FTP服务器(Working with FTP Servers)

8月 10 · 10 min

CFNetwork 编程指南之五: 与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)

#与身份验证HTTP服务器通信

本文描述了如何利用CFHTTPAuthentication API与需要身份验证的HTTP服务器通信。它解释了如何找到匹配的验证对象和证书,并将它们应用到HTTP请求,然后存储以供以后使用。

一般来说,如果一个HTTP服务器返回一个401或407响应你的HTTP请求,这表明服务器进行身份验证需要证书。在CFHTTPAuthentication API中,每个证书组存储在CFHTTPAuthentication 对象中。因此,每个不同的身份认证服务器和每个不同用户连接的服务器需要一个单独的CFHTTPAuthentication 对象。与服务器通信,你需要应用CFHTTPAuthentication 对象到HTTP请求。接下来更加详细的解释这些步骤。

8月 10 · 13 min

CFNetwork 编程指南之四: 与HTTP服务器通信(Communicating with HTTP Servers)

#与HTTP服务器通信

本文解释了如何创建、发送和接收HTTP请求和响应。

##创建一个CFHTTP请求
HTTP请求是一个消息,这个消息由远程服务器执行的方法,操作的对象(URL),消息头和消息体。方法通常是下面之一:GET, HEAD, PUT, POST, DELETE, TRACE, CONNECT 或OPTIONS。
用CFHTTP创建一个HTTP请求分为四个步骤:

  • 使用CFHTTPMessageCreateRequest 函数生成CFHTTP消息对象
  • 使用CFHTTPMessageSetBody函数设置消息体
  • 使用CFHTTPMessageSetHeaderFieldValue 函数设置消息头
  • 通过调用CFHTTPMessageCopySerializedMessage函数序列化消息

8月 10 · 7 min

CFNetwork 编程指南之三: 使用流(Working with Streams)

#Working with Streams

本文讨论如何创建、打开和检查读写流错误。它还描述了如何从读取流读取信息,如何从写入信息到写入流,如何在读取或写入流时防止阻塞以及如何通过代理服务器导航到流。

##使用读取流
核心基础流可用于读取或写入文件或使用网络套接字。除了创建这些流过程中的异常,其他行为类似。

###创建一个读取流
首先创建一个读取流。列表2-1为一个文件创建读取流。

列表2-1 为一个文件创建读取流

1
CFReadStreamRef myReadStream = CFReadStreamCreateWithFile(kCFAllocatorDefault, fileURL);

8月 10 · 15 min

CFNetwork 编程指南之二: CFNetwork概念(CFNetwork Concepts)

#CFNetwork概念

CFNetwork是一个低级别高性能的框架,使你能够精细的控制协议栈。它是BSD套接字的扩展,标准套接字抽象API提供对象来简化任务,例如与FTP和HTTP服务器通信或解析DNS主机。CFNetwork物理上和理论上都基于BSD套接字。

正如CFNetwork依赖与BSD套接字,有大量的Cocoa类依赖CFNetwork(例如,NSURL)。此外,Cocoa类的web工具包用来在窗口显示网页内容。这两个类是高层级,并实现大部分的网络协议。因此,软件层的结构如图1-1所示。

图1-1 OS X上CFNetwork和其他软件层

8月 10 · 10 min

CFNetwork 编程指南之一: 概览

8月 10 · 1 min

0 %