Categories - iOS网络编程
Multipeer connectivity 对等结构网络编程
#对等结构网络
对等结构网络是苹果的Ad Hoc网络的一种,是在小空间里构建无限网络的解决方案。苹果公司的GameKit或Multipeer Connectivity(多点连接)框架中提供了开发这种网络的APi.
在iOS7中,引入了一个全新的框架——Multipeer Connectivity(多点连接)。利用Multipeer Connectivity框架,即使在没有连接到WiFi(WLAN)或移动网络(xG)的情况下,距离较近的Apple设备(iMac/iPad/iPhone)之间可基于蓝牙和WiFi(P2P WiFi)技术进行发现和连接实现近场通信。
8月 10 · 6 min
CFNetwork 编程指南之七: 使用网络诊断(Using Network Diagnostics)
#使用网络诊断
在许多基于网络的应用中,会发生基于网络的错误,这些错误与你的应用无关。然而,大多数用户可能不知道为什么应用失败。CFNetDiagnostics API为你提供一种快速而简单的方法来帮助用户解决网络问题。
如果你的应用使用一个CFStream 对象,然后调用CFNetDiagnosticCreateWithStreams函数创建一个网络诊断引用(CFNetDiagnosticRef) 。CFNetDiagnosticCreateWithStreams有一个分配器,读取流和写入流作为参数。如果你的应用只使用读取流或写入流,未使用的参数设置为NULL。
如果不存在流,你还可以直接从URL创建一个网络诊断引用。要做到这一点,调用CFNetDiagnosticCreateWithURL 函数,并传递一个分配器,URL到CFURLRef。它将返回一个网络诊断引用供你使用。
为了通过网络诊断助手诊断问题,调用CFNetDiagnosticDiagnoseProblemInteractively 函数并传递网络诊断引用。列表6-1展示了如何使用CFNetDiagnostics 诊断在运行循环上实现的流。
列表6-1 当发生流错误时使用CFNetDiagnostics API
1 | case kCFStreamEventErrorOccurred: |
8月 10 · 1 min
CFNetwork 编程指南之六: 使用FTP服务器(Working with FTP Servers)
#使用FTP服务器
本文揭示了如何使用CFFTP API的一些基本特性。管理FTP事务是异步执行的,而管理文件传输是同步实现的。
##下载文件
使用CFFTP类似于CFHTTP ,因为它们都是基于CFStream。与其他任何异步使用CFStream的API一样,使用CFFTP下载一个文件要求你为文件创建一个读取流和一个回调函数。当读取流接收数据时,回调函数将运行,你需要适当的下载字节。这个过程通常执行两个函数:一个用来设置流,另一个充当回调函数。
###设置FTP流
首先使用CFReadStreamCreateWithFTPURL 函数创建一个读取流并传入要下载远程服务器上文件的URL字符串。URL字符串的例子ftp://ftp.example.com/file.txt。注意:字符串包含服务器名称、路径和文件。接下来,在文件下载的位置创建一个本地写入流。这个过程使用CFWriteStreamCreateWithFile 函数完成,传入要下载文件的路径。
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所示。

8月 10 · 10 min
CFNetwork 编程指南之一: 概览
CFNetwork是核心服务框架中的一个框架,提供了抽象概念的网络协议库。这些抽象概念使得执行各种网络任务变得更容易,例如:
- 使用BSD套接字
- 使用SSL或TLS创建加密连接
- 解析DNS主机
- 使用HTTP,验证HTTP和HTTP服务器
- 使用FTP服务器
- 发布、解析和浏览Bonjour 服务(NSNetServices and CFNetServices Programming Guide中有讨论)。
8月 10 · 1 min