CocoaAsyncSocket 为 Mac 和 iOS 提供易于使用且功能强大的异步套接字库。以下是对这些类的描述。
GCDAsyncSocket 和 AsyncSocket 是 TCP/IP 套接字网络库。以下是两者都有的关键功能
原生 Objective-C,在一个类中完全独立。
无需与套接字或流打交道。此类为您处理所有事情。
完整的代理支持
错误、连接、读取完成、写入完成、进度和断开连接都会调用您的代理方法。
带可选超时的队列非阻塞读取和写入。
您告诉它要读取或写入的内容,它为您处理所有事情。排队、缓冲和在流中搜索终止序列 – 所有这些都将自动为您处理。
自动套接字接受。
启动服务器套接字,告诉它接受连接,它将为每个连接调用您的新实例本身。
支持 IPv4 和 IPv6 上的 TCP 流。
自动连接到 IPv4 或 IPv6 主机。自动接受来自单个实例的 IPv4 和 IPv6 连接。不再需要担心多个套接字。
支持 TLS / SSL
使用单一方法调用轻松保护套接字。适用于客户端和服务器套接字。
GCDAsyncSocket 是基于 Grand Central Dispatch 构建的
完全基于 GCD 和线程安全
它完全在它自己的 GCD dispatch_queue 中运行,并且完全线程安全。此外,定义的方法都是异步调用到您选择的 dispatch_queue。这意味着您的套接字代码和代理/处理代码可以并行运行。
最新的技术与性能优化
在内部,库利用了诸如 kqueue 等技术来限制系统调用并优化缓冲分配。换句话说,峰值性能。
AsyncSocket 包装 CFSocket 和 CFStream
GCDAsyncUdpSocket 和 AsyncUdpSocket 是 UDP/IP 套接字网络库。以下是两者都有的关键功能
原生 Objective-C,在一个类中完全独立。
无需与低级套接字打交道。此类为您处理所有事情。
完整的代理支持。
错误、发送完成、接收完成和断开连接都会调用您的代理方法。
带可选超时的队列非阻塞发送和接收操作。
你告诉它发送什么或接收什么,然后它会自动处理一切,包括队列、缓冲、等待和检查errno。
支持IPv4和IPv6。
自动使用IPv4和/或IPv6发送/接收。不再需要担心多个套接字。
GCDAsyncUdpSocket建立在Grand Central Dispatch之上
AsyncUdpSocket封装了CFSocket