CFNetwork框架详细解析(一) —— 基本概览

版本记录

版本号 时间
V1.0 2018.02.07

前言

CFNetwork框架访问网络服务并处理网络配置的变化。 建立在网络协议抽象的基础上,可以简化诸如使用BSD套接字,管理HTTP和FTP服务器以及管理Bonjour服务等任务。接下来几篇我们就一起看一下这个框架。

Overview

下面先看一下该框架的基本信息。

CFNetwork框架详细解析(一) —— 基本概览_第1张图片

下面看一下该框架的基本结构。

CFNetwork框架详细解析(一) —— 基本概览_第2张图片
CFNetwork框架详细解析(一) —— 基本概览_第3张图片
CFNetwork框架详细解析(一) —— 基本概览_第4张图片
CFNetwork框架详细解析(一) —— 基本概览_第5张图片
CFNetwork框架详细解析(一) —— 基本概览_第6张图片

Topics

1. Errors

  • CFNetworkErrors

    • 此枚举包含在错误域 kCFErrorDomainCFNetwork下返回的错误代码。
  • Error Dictionary Keys

    • 可能在CFErrorRef对象的userInfo字典中提供的网络相关密钥。
  • Error Domains

    • 高级错误域。

2. Hosts

  • CFHostRef

    • 表示CFHost对象的不透明引用。
  • CFHostInfoType

    • 指示要解析的数据类型的值或解析的数据类型。
  • CFHostClientContext

    • 包含用户定义的CFHost对象数据和回调的结构。
  • CFHostCancelInfoResolution

    • 取消host的分辨率。
  • CFHostCreateCopy

    • 通过复制创建一个新的主机对象。
  • CFHostCreateWithAddress

    • 使用地址来创建主机对象的实例。
  • CFHostCreateWithName

    • 使用名称来创建主机对象的实例。
  • CFHostGetAddressing

    • 从主机获取地址。
  • CFHostGetNames

    • 从CFHost获取名称。
  • CFHostGetReachability

    • 从主机获取可达性信息。
  • CFHostGetTypeID

    • 获取CFHost不透明类型的Core Foundation类型标识符。
  • CFHostScheduleWithRunLoop

    • 在运行循环上安排一个CFHost。
  • CFHostSetClient

    • 将客户端上下文和回调函数与CFHost对象关联起来,或者解除先前设置的客户端上下文和回调函数的关联。
  • CFHostStartInfoResolution

    • 开始解析主机对象。
  • CFHostUnscheduleFromRunLoop

    • 从运行循环中取消调度CFHost

3. Global Proxy Configuration

  • CFNetworkCopyProxiesForURL

    • 返回应该用于下载给定URL的代理列表。
  • CFNetworkCopyProxiesForAutoConfigurationScript

    • 执行代理自动配置脚本以确定用于检索指定URL的最佳代理。
  • CFNetworkExecuteProxyAutoConfigurationScript

    • 下载代理自动配置脚本并执行它。
  • CFNetworkExecuteProxyAutoConfigurationURL

    • 下载代理自动配置脚本并执行它。
  • CFNetworkCopySystemProxySettings

    • 返回包含当前系统互联网代理设置的CFDictionary
  • CFProxyAutoConfigurationResultCallback

    • 代理自动配置计算完成时调用的回调函数。
  • Property Keys

    • 调用属性get/set函数的键,如 CFReadStreamSetProperty
      和CFReadStreamCopyProperty。
  • Proxy Types

    • 指定代理类型的常量。
  • Global Proxy Settings Constants
    • CFNetworkCopySystemProxySettings返回的全局代理设置字典中的键的常量。

4. HTTP Authentication

  • CFHTTPAuthenticationRef

    • 表示HTTP认证信息的不透明引用。
  • CFHTTPAuthenticationAppliesToRequest

    • 返回一个布尔值,该值指示CFHTTPAuthentication对象是否与CFHTTPMessage对象关联。
  • CFHTTPAuthenticationCopyDomains

    • 返回可以应用给定CFHTTPAuthentication对象的域URL数组。
  • CFHTTPAuthenticationCopyMethod

    • 获取将CFHTTPAuthentication对象应用于请求时将使用的最强的身份验证方法。
  • CFHTTPAuthenticationCopyRealm

    • 获取认证信息的名称空间。
  • CFHTTPAuthenticationCreateFromResponse

    • 使用身份验证失败响应来创建CFHTTPAuthentication对象。
  • CFHTTPAuthenticationGetTypeID

    • 获取CFHTTPAuthentication不透明类型的Core Foundation类型标识符。
  • CFHTTPAuthenticationIsValid

    • 返回一个布尔值,该值指示CFHTTPAuthentication对象是否有效。
  • CFHTTPAuthenticationRequiresAccountDomain

    • 返回一个布尔值,该值指示CFHTTPAuthentication对象是否使用需要帐户域的身份验证方法。
  • CFHTTPAuthenticationRequiresOrderedRequests

    • 返回一个布尔值,该值指示是否应一次一个验证请求。
  • CFHTTPAuthenticationRequiresUserNameAndPassword

    • 返回一个布尔值,该值指示CFHTTPAuthentication对象是否使用需要用户名和密码的身份验证方法。
  • kCFHTTPAuthenticationAccountDomain

    • 帐户域用于身份验证。
  • kCFHTTPAuthenticationPassword

    • 用于身份验证的密码。
  • kCFHTTPAuthenticationSchemeBasic

    • 请求HTTP基本认证方案。
  • kCFHTTPAuthenticationSchemeDigest

    • 请求HTTP摘要认证方案。
  • kCFHTTPAuthenticationSchemeKerberos

    • 请求HTTP Kerberos认证方案。
  • kCFHTTPAuthenticationSchemeNTLM

    • 请求HTTP NTLM认证方案。
  • kCFHTTPAuthenticationSchemeNegotiate

    • 请求HTTP协商认证方案。
  • kCFHTTPAuthenticationSchemeNegotiate2

    • 请求HTTP协商v2认证方案。
  • kCFHTTPAuthenticationSchemeOAuth1

    • 请求HTTP OAuth 1.0身份验证方案。
  • kCFHTTPAuthenticationSchemeXMobileMeAuthToken

    • 请求HTTP XMobileMeAuthToken认证方案。
  • kCFHTTPAuthenticationUsername

    • 用于身份验证的用户名。

5. HTTP Messages

  • CFHTTPMessageRef

    • 表示HTTP消息的不透明引用。
  • CFHTTPMessageAddAuthentication

    • 将认证信息添加到请求。
  • CFHTTPMessageAppendBytes

    • 将数据附加到CFHTTPMessage对象。
  • CFHTTPMessageApplyCredentialDictionary

    • 使用包含认证凭证的字典来执行由CFHTTPAuthentication对象指定的认证方法。
  • CFHTTPMessageApplyCredentials

    • 执行由CFHTTPAuthentication对象指定的身份验证方法。
  • CFHTTPMessageCopyAllHeaderFields

    • CFHTTPMessage对象获取所有头字段。
  • CFHTTPMessageCopyBody

    • CFHTTPMessage对象获取正文。
  • CFHTTPMessageCopyHeaderFieldValue

    • CFHTTPMessage对象获取头字段的值。
  • CFHTTPMessageCopyRequestMethod

    • CFHTTPMessage对象获取请求方法。
  • CFHTTPMessageCopyRequestURL

    • CFHTTPMessage对象获取URL。
  • CFHTTPMessageCopyResponseStatusLine

    • CFHTTPMessage对象获取状态行。
  • CFHTTPMessageCopySerializedMessage

    • 序列化一个CFHTTPMessage对象。
  • CFHTTPMessageCopyVersion

    • CFHTTPMessage对象获取HTTP版本。
  • CFHTTPMessageCreateCopy

    • 获取一个CFHTTPMessage对象的副本。
  • CFHTTPMessageCreateEmpty

    • 获取一个CFHTTPMessage对象的副本。
  • CFHTTPMessageCreateRequest

    • 创建并返回一个新的空的CFHTTPMessage对象。
  • CFHTTPMessageCreateResponse

    • 创建并返回一个HTTP请求的CFHTTPMessage对象。
  • CFHTTPMessageGetResponseStatusCode

    • 为HTTP响应创建并返回一个CFHTTPMessage对象。
  • CFHTTPMessageGetTypeID

    • 返回CFHTTPMessage opaque类型的Core Foundation类型标识符。
  • CFHTTPMessageIsHeaderComplete

    • 确定消息头是否完整。
  • CFHTTPMessageIsRequest

    • 返回指示CFHTTPMessage是请求还是响应的布尔值。
  • CFHTTPMessageSetBody

    • 设置一个CFHTTPMessage对象的主体。
  • CFHTTPMessageSetHeaderFieldValue

    • 设置HTTP消息中的标题字段的值。
  • kCFHTTPVersion1_0

    • 指定HTTP version 1.0
  • kCFHTTPVersion1_1

    • 指定HTTP version 1.1
  • kCFHTTPVersion2_0

6. FTP

  • CFFTPCreateParsedResourceListing

  • kCFFTPResourceGroup

  • kCFFTPResourceLink

  • kCFFTPResourceModDate

  • kCFFTPResourceMode

  • kCFFTPResourceName

  • kCFFTPResourceOwner

  • kCFFTPResourceSize

  • kCFFTPResourceType

7. Network Diagnostics

  • CFNetDiagnosticRef

  • CFNetDiagnosticStatusValues

  • CFNetDiagnosticCopyNetworkStatusPassively

  • CFNetDiagnosticCreateWithStreams

  • CFNetDiagnosticCreateWithURL

  • CFNetDiagnosticDiagnoseProblemInteractively

  • CFNetDiagnosticSetName

8. Network Services

  • CFNetServiceRef

    • 表示CFNetService的不透明引用。
  • CFNetServiceBrowserRef

    • 表示CFNetServiceBrowser的不透明引用。
  • CFNetServiceBrowserFlags

  • CFNetServiceMonitorRef

    • 服务监视器的不透明引用。
  • CFNetServiceMonitorType

    • 记录类型说明符,用于通知服务监视器要记录的记录更改的类型。
  • CFNetServiceClientContext

    • CFNetService与回调函数关联或CFNetServiceBrowser创建时提供的结构。
  • CFNetServiceRegisterFlags

  • CFNetServicesError

    • 错误代码可能由CFNetServices函数返回或传递给CFNetServices回调函数。
  • CFNetServiceBrowserInvalidate

    • 使网络服务浏览器对象的实例无效。
  • CFNetServiceBrowserScheduleWithRunLoop

    • 在运行循环上安排一个CFNetServiceBrowser
  • CFNetServiceBrowserCreate

    • 创建一个网络服务浏览器对象的一个实例。
  • CFNetServiceBrowserGetTypeID

    • 获取网络服务浏览器对象的Core Foundation类型标识符。
  • CFNetServiceBrowserSearchForDomains

    • 搜索域。
  • CFNetServiceBrowserSearchForServices

    • 在域中搜索指定类型的服务。
  • CFNetServiceBrowserStopSearch

    • 停止搜索域或服务。
  • CFNetServiceBrowserUnscheduleFromRunLoop

    • 从运行循环和模式中取消调度CF NetServiceBrowser
  • CFNetServiceCancel

    • 取消服务注册或服务解决方案。
  • CFNetServiceCreate

    • 创建一个网络服务对象的一个实例。
  • CFNetServiceCreateCopy

    • 创建一个CFNetService对象的副本。
  • CFNetServiceCreateDictionaryWithTXTData

    • 使用TXT记录数据创建一个字典。
  • CFNetServiceCreateTXTDataWithDictionary

    • 将一组键/值对变为适合传递给CFNetServiceSetTXTData的CFDataRef
  • CFNetServiceGetAddressing

    • CFNetService获取IP地址。
  • CFNetServiceGetDomain

    • CFNetService获取域。
  • CFNetServiceGetName

    • CFNetService获取名称。
  • CFNetServiceGetPortNumber

    • 该函数从CFNetService获取端口号。
  • CFNetServiceGetProtocolSpecificInformation

  • CFNetServiceGetTXTData

    • 查询网络服务的TXT记录的内容。
  • CFNetServiceGetTargetHost

    • 查询其目标主机的CFNetService
  • CFNetServiceGetType

    • CFNetService获取类型。
  • CFNetServiceGetTypeID

    • 获取网络服务对象的Core Foundation类型标识符。
  • CFNetServiceMonitorCreate

    • 创建监视记录更改的NetServiceMonitor对象的实例。
  • CFNetServiceMonitorGetTypeID

    • 获取所有CFNetServiceMonitor实例的Core Foundation类型标识符。
  • CFNetServiceMonitorInvalidate

    • 使网络服务监视器对象的实例无效。
  • CFNetServiceMonitorScheduleWithRunLoop

    • 在运行循环上安排一个CFNetServiceMonitor
  • CFNetServiceMonitorStart

    • 开始监控。
  • CFNetServiceMonitorStop

    • 停止一个CFNetServiceMonitor
  • CFNetServiceMonitorUnscheduleFromRunLoop

    • 从运行循环中取消调度CFNetServiceMonitor
  • CFNetServiceRegister

  • CFNetServiceRegisterWithOptions

    • 使CFNetService在网络上可用。
  • CFNetServiceResolve

  • CFNetServiceResolveWithTimeout

    • 获取CFNetService的IP地址或地址。
  • CFNetServiceSetClient

    • 将回调函数与CFNetService关联或解除CFNetService的回调函数。
  • CFNetServiceSetProtocolSpecificInformation

  • CFNetServiceSetTXTData

    • 设置CFNetService的TXT记录
  • CFNetServiceUnscheduleFromRunLoop

    • 从运行循环中取消调度CFNetService
  • CFNetServiceScheduleWithRunLoop

    • 在运行循环上安排一个CFNetService

9. Streams

  • CFReadStreamCreateForHTTPRequest

  • CFReadStreamCreateForStreamedHTTPRequest

  • CFHTTPReadStreamSetRedirectsAutomatically

  • kCFStreamPropertyHTTPAttemptPersistentConnection

  • kCFStreamPropertyHTTPFinalRequest

  • kCFStreamPropertyHTTPFinalURL

  • kCFStreamPropertyHTTPProxy

  • kCFStreamPropertyHTTPProxyHost

  • kCFStreamPropertyHTTPProxyPort

  • kCFStreamPropertyHTTPRequestBytesWrittenCount

  • kCFStreamPropertyHTTPResponseHeader

  • kCFStreamPropertyHTTPSProxyHost

  • kCFStreamPropertyHTTPSProxyPort

  • kCFStreamPropertyHTTPShouldAutoredirect

  • CFWriteStreamCreateWithFTPURL

  • CFReadStreamCreateWithFTPURL

  • kCFStreamPropertyFTPAttemptPersistentConnection

  • kCFStreamPropertyFTPFetchResourceInfo

  • kCFStreamPropertyFTPFileTransferOffset

  • kCFStreamPropertyFTPPassword

  • kCFStreamPropertyFTPProxy

  • kCFStreamPropertyFTPProxyHost

  • kCFStreamPropertyFTPProxyPassword

  • kCFStreamPropertyFTPProxyPort

  • kCFStreamPropertyFTPProxyUser

  • kCFStreamPropertyFTPResourceSize

  • kCFStreamPropertyFTPUsePassiveMode

  • kCFStreamPropertyFTPUserName

  • CFSocketStreamSOCKSGetError

    • 此函数从流操作返回的CFStreamError中获取kCFStreamErrorDomainSOCKS域中的错误代码。
  • CFSocketStreamSOCKSGetErrorSubdomain

    • 从流操作返回的CFStreamError中获取与kCFStreamErrorDomainSOCKS域中的错误关联的错误子域。
  • CFStreamCreatePairWithSocketToCFHost

    • 创建连接到给定CFHost对象的可读写流。
  • CFStreamCreatePairWithSocketToNetService

    • CFNetService创建一对流。
  • kCFStreamNetworkServiceType

    • 流的服务类型。 提供服务类型允许系统正确处理流的某些属性,包括路由和暂停行为。 大多数流不需要设置此属性。 请参阅Stream Service Types以获取可能的值列表。
  • kCFStreamNetworkServiceTypeBackground

    • 指定该流是后台下载。
  • kCFStreamNetworkServiceTypeCallSignaling

  • kCFStreamNetworkServiceTypeVideo

    • 指定流正在提供交互式视频数据。
  • kCFStreamNetworkServiceTypeVoIP

  • kCFStreamNetworkServiceTypeVoice

    • 指定流正在提供交互式语音数据。
  • kCFStreamErrorDomainFTP

    • 错误代码是一个FTP错误代码。
  • kCFStreamErrorDomainHTTP

    • 错误代码是一个HTTP错误代码。
  • kCFStreamErrorDomainMach

    • 错误代码是在mach / error.h中定义的Mach错误代码。
  • kCFStreamErrorDomainNetDB

    • 错误代码是在netdb.h中定义的错误代码。
  • kCFStreamErrorDomainNetServices

    • 错误代码是一个CFNetService错误代码。 有关详细信息,请参阅 CFNetServicesError枚举。
  • kCFStreamErrorDomainSOCKS

    • 错误代码是SOCKS代理错误。
  • kCFStreamErrorDomainSSL

    • 错误代码是Security / SecureTransport.h中定义的SSL错误代码。
  • kCFStreamErrorDomainSystemConfiguration

    • 错误代码是System / ConfigurationSystemConfiguration.h中定义的系统配置错误代码。
  • kCFStreamErrorDomainWinSock

    • 在Windows上运行CFNetwork代码时,此域将返回与底层TCP / IP堆栈相关的错误代码。 您还应该注意,诸如ENOMEM之类的非网络错误是通过POSIX域传递的。 有关错误代码,请参阅winsock2.h头文件。
  • kCFStreamPropertyConnectionIsCellular

    • 指示流是通过蜂窝(WWAN)接口连接的布尔值。 这是一个只读属性,在连接建立之前是false。
  • kCFStreamPropertyNoCellular

    • 指示不应通过蜂窝(WWAN)连接建立连接的布尔值。 此值只能在打开流之前设置。
  • kCFStreamPropertyProxyLocalBypass

    • Proxy Local Bypass属性密钥。
  • kCFStreamPropertySOCKSPassword

    • 用于设置用户密码所需的密钥的常量。
  • kCFStreamPropertySOCKSProxy

    • SOCKS代理属性键。
  • kCFStreamPropertySOCKSProxyHost

    • 用于SOCKS代理主机密钥的常量。
  • kCFStreamPropertySOCKSProxyPort

    • 用于SOCKS代理主机端口密钥的常量。
  • kCFStreamPropertySOCKSUser

    • 用于设置用户名所需的密钥的常量。
  • kCFStreamPropertySOCKSVersion

    • 用于SOCKS版本键的常量。
  • kCFStreamPropertySSLContext

  • kCFStreamPropertySSLPeerCertificates

  • kCFStreamPropertySSLPeerTrust

    • 用于复制操作的SSL Peer Trust属性密钥,它返回包含SSL握手结果的SecTrustRef对象。
  • kCFStreamPropertySSLSettings

    • 用于设置操作的SSL设置属性键。
  • kCFStreamPropertyShouldCloseNativeSocket

    • 应该关闭本地套接字属性键。
  • kCFStreamPropertySocketExtendedBackgroundIdleMode

  • kCFStreamPropertySocketRemoteHost

    • 如果已知远程主机的密钥的值是一个CFHostRef。 如果不是,则其值为NULL
  • kCFStreamPropertySocketRemoteNetService

    • 该密钥的值是远程网络服务的CFNetServiceRef(如果已知)。 如果不是,则其值为NULL。
  • kCFStreamPropertySocketSecurityLevel

    • Socket Security Level属性键
  • kCFStreamSSLAllowsAnyRoot

  • kCFStreamSSLAllowsExpiredCertificates

  • kCFStreamSSLAllowsExpiredRoots

  • kCFStreamSSLCertificates

    • 安全属性键,其值是SecCertificateRefsCFArray,除了数组中的第一个元素(SecIdentityRef)
  • kCFStreamSSLIsServer

    • 安全属性键,其值指示连接是否充当SSL进程中的服务器。
  • kCFStreamSSLLeve

    • 安全属性键,其值指定流的安全级别。
  • kCFStreamSSLPeerName

    • 其值覆盖用于证书验证的名称的安全属性密钥。
  • kCFStreamSSLValidatesCertificateChain

    • 安全属性密钥,其值指示是否应验证证书链。
  • kCFStreamSocketSOCKSVersion4

    • 常量用于kCFStreamSockerSOCKSVersion键以指定SOCKS4作为流的SOCKS版本。
  • kCFStreamSocketSOCKSVersion5

    • 用于kCFStreamSOCKSVersion键的常量,指定SOCKS5作为流的SOCKS版本。
  • kCFStreamSocketSecurityLevelNegotiatedSSL

    • 指定可以协商的最高级别安全协议设置为套接字流的安全协议。
  • kCFStreamSocketSecurityLevelNone

    • 指定不设置安全级别。
  • kCFStreamSockeSecurityLevelSSLv2

  • kCFStreamSocketSecurityLevelSSLv3

  • kCFStreamSocketSecurityLevelTLSv1

    • 指定将TLS版本1设置为套接字流的安全协议。
  • CFStreamErrorHTTP

    • HTTP请求的读取流可能会返回的错误代码。
  • CFStreamErrorHTTPAuthentication

    • 尝试对请求应用身份验证时可能返回的身份验证错误代码。
  • Secure Sockets (SOCKS) Errors

    • kCFStreamErrorDomainSOCKS错误域返回的错误代码。

10. Reference

  • CFNetwork Data Types

  • CFNetwork Enumerations

后记

本篇已结束,后面更精彩~~~~

CFNetwork框架详细解析(一) —— 基本概览_第7张图片

你可能感兴趣的:(CFNetwork框架详细解析(一) —— 基本概览)