CocoaAsyncSocket 为 macOS、iOS 和 tvOS 提供易于使用且功能强大的异步 socket 库。类描述如下。
使用 CocoaPods 安装,将此行添加到您的 Podfile
use_frameworks! # Add this if you are targeting iOS 8+ or using Swift
pod 'CocoaAsyncSocket'
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
选择正确的框架并将其拖到您的项目中。
只需将软件包依赖项添加到您的 Package.swift,并在必要的 targets 中依赖 "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
GCDAsyncSocket 是一个基于 Grand Central Dispatch 构建的 TCP/IP socket 网络库。以下是可用的主要功能
原生 Objective-C,完全自包含在一个类中。
无需与 sockets 或 streams 混淆。此类为您处理一切。
完整的委托支持
错误、连接、读取完成、写入完成、进度和断开连接都会导致调用您的委托方法。
排队非阻塞读取和写入,带有可选超时。
您告诉它要读取或写入什么,它会为您处理一切。排队、缓冲以及在流中搜索终止序列 - 所有这些都为您自动处理。
自动 socket 接受。
启动服务器 socket,告诉它接受连接,它将为每个连接使用自身的新实例调用您。
支持 IPv4 和 IPv6 上的 TCP 流。
自动连接到 IPv4 或 IPv6 主机。使用此类的单个实例自动接受来自 IPv4 和 IPv6 的传入连接。不再需要担心多个 sockets。
支持 TLS / SSL
只需一次方法调用即可轻松保护您的 socket。客户端和服务器 sockets 均可用。
完全基于 GCD 且线程安全
它完全在其自身的 GCD dispatch_queue 中运行,并且完全线程安全。此外,委托方法都在您选择的 dispatch_queue 上异步调用。这意味着您的 socket 代码和您的委托/处理代码的并行操作。
GCDAsyncUdpSocket 是一个基于 Grand Central Dispatch 构建的 UDP/IP socket 网络库。以下是可用的主要功能
原生 Objective-C,完全自包含在一个类中。
无需与底层 sockets 混淆。此类为您处理一切。
完整的委托支持。
错误、发送完成、接收完成和断开连接都会导致调用您的委托方法。
排队非阻塞发送和接收操作,带有可选超时。
您告诉它要发送或接收什么,它会为您处理一切。排队、缓冲、等待和检查 errno - 所有这些都为您自动处理。
支持 IPv4 和 IPv6。
自动使用 IPv4 和/或 IPv6 发送/接收。不再需要担心多个 sockets。
完全基于 GCD 且线程安全
它完全在其自身的 GCD dispatch_queue 中运行,并且完全线程安全。此外,委托方法都在您选择的 dispatch_queue 上异步调用。这意味着您的 socket 代码和您的委托/处理代码的并行操作。
对于那些刚接触网络的新手,建议您阅读 wiki。
Sockets 的工作方式可能与您想象的并不完全相同...
还有问题? 试试 CocoaAsyncSocket 邮件列表。
喜欢这个项目?想请我喝 ☕️ ?(或 🍺 😀 )