CocoaAsyncSocket
CocoaAsyncSocket 为 macOS、iOS 和 tvOS 提供了易于使用且功能强大的异步套接字库。下面将介绍类。
安装
CocoaPods
使用 CocoaPods 安装,将以下行添加到 Podfile 中
use_frameworks! # Add this if you are targeting iOS 8+ or using Swift
pod 'CocoaAsyncSocket'
Carthage
CocoaAsyncSocket 适用于 Carthage。为了包含它,将以下行添加到您的 Cartfile
github "robbiehanson/CocoaAsyncSocket" "master"
项目当前配置为为 iOS、tvOS 和 Mac 构建项目。使用 Carthage 构建后,生成的框架将存储在
Carthage/Build/iOS/CocoaAsyncSocket.framework
Carthage/Build/tvOS/CocoaAsyncSocket.framework
Carthage/Build/Mac/CocoaAsyncSocket.framework
选择正确的框架并将其拖入您的项目。
Swift 包管理器
简单地将包依赖项添加到您的 Package.swift 中,并在必要的目标中依赖 "CocoaAsyncSocket"。
dependencies: [
.package(url: "https://github.com/robbiehanson/CocoaAsyncSocket", from: "7.6.4")
]
手动
您也可以直接添加源文件将其包含到项目中,但最好使用依赖管理器以保持更新。
导入
使用 Objective-C
// When using Clang Modules:
@import CocoaAsyncSocket;
// or when not:
#import "GCDAsyncSocket.h" // for TCP
#import "GCDAsyncUdpSocket.h" // for UDP
使用 Swift
import CocoaAsyncSocket
TCP
GCDAsyncSocket 是一个基于 Grand Central Dispatch 构建的 TCP/IP 套接字网络库。以下是可用的关键特性:
-
原生 Objective-C,完全封装在一个类中。
无需与套接字或流打交道。此类为您处理所有工作。 -
完整的代理支持
错误、连接、读取完成、写入完成、进度和断开连接都将调用您的代理方法。 -
带可选超时的队列非阻塞读取和写入。
您告诉它读取或写入什么,然后它为您处理所有工作。排队、缓冲以及在流中搜索终止序列 - 均自动为您处理。 -
自动套接字接受。
启动服务器套接字,告诉它接受连接,并为每个连接调用您的新实例本身。 -
支持 IPv4 和 IPv6 上的 TCP 流
自动连接到 IPv4 或 IPv6 主机。使用此类的一个实例自动接受通过 IPv4 和 IPv6 的传入连接。无需再担心多个套接字。 -
支持 TLS / SSL
只需一个方法调用即可轻松保护您的套接字。适用于客户端和服务器套接字。 -
基于 GCD 和线程安全
它完全在其自己的 GCD dispatch_queue 中运行,并且是完全线程安全的。此外,所有的代理方法都将异步调用到您选择的 dispatch_queue。这意味着您的套接字代码和代理/处理代码的并行操作。
UDP
GCDAsyncUdpSocket是一个基于Grand Central Dispatch构建的UDP/IP套接字网络库。以下是可用的关键特性:
-
原生 Objective-C,完全封装在一个类中。
无需与底层套接字纠缠。此类为你处理一切。 -
全面支持委托。
错误、发送完成、接收完成和断开连接都将调用你的委托方法。 -
队列的非阻塞发送和接收操作,可选的超时。
你告诉它要发送或接收的内容,它为你处理一切。排队、缓冲、等待和检查errno——所有这些都会自动处理。 -
支持IPv4和IPv6。
自动使用IPv4和/或IPv6发送/接收。无需再担心多个套接字。 -
基于 GCD 和线程安全
它完全在其自己的 GCD dispatch_queue 中运行,并且是完全线程安全的。此外,所有的代理方法都将异步调用到您选择的 dispatch_queue。这意味着您的套接字代码和代理/处理代码的并行操作。
对于那些新接触网络的用户,建议你阅读该维基百科。
套接字的工作方式可能并不完全像你想的那样...
还有疑问? 尝试访问 CocoaAsyncSocket邮件列表。
喜欢这个项目?要不要买我