CFNetwork 在 iOS 和 MacOS 上优于 BSD 套接字和 GCD 的优势?

Posted

技术标签:

【中文标题】CFNetwork 在 iOS 和 MacOS 上优于 BSD 套接字和 GCD 的优势?【英文标题】:Advantages of CFNetwork over BSD sockets & GCD on iOS and MacOS? 【发布时间】:2013-07-06 01:24:04 【问题描述】:

我正在构建一个与 ios(设备和模拟器)通信的 Mac 应用程序。当与模拟器一起使用时,它旨在仅使用 Wifi 网络(用于 Mac 网络范围内的设备)或环回/链接本地设备。它不应该使用 3G/LTE 网络,但通过 wifi 将 iOS 设备连接到其网络的 *** 连接可能对某些用户有用。

使用基于 CFNetwork/CFRunloop/CFStream 的套接字比仅仅使用 BSD 套接字(结合 GCD 和 dispatch_io)“走向金属”有什么优势吗?

在我看来,如果我要使用 GCD、调度 I/O 和调度源而不是基于 CFNetwork/CFRunLoop 的数据读/写事件,那么 CFNetworking 只是在 BSD 套接字之上添加了不必要的抽象。

网络协议将是自定义二进制协议。即,不基于 HTTP 或任何其他现有协议。

【问题讨论】:

【参考方案1】:

如果您不需要蜂窝或按需 ***,那么我真的想不出您必须使用 CFNetwork 的原因,但一位智者曾经告诉我: “使用完成工作的***别的抽象。” CFNetwork 是比 BSD 套接字和 GCD dispatch_io 更高级别的 API。

另一方面,“按照你所知道的去做。”如果您更愿意在 BSD 套接字或 GCD dispatch_io 惯用语中工作,请务必继续前进。

【讨论】:

以上是关于CFNetwork 在 iOS 和 MacOS 上优于 BSD 套接字和 GCD 的优势?的主要内容,如果未能解决你的问题,请参考以下文章

iOS CFNetwork报错

[深入浅出Cocoa]iOS网络编程之CFNetwork

CFNetwork SSLHandshake 失败 iOS 9

iOS 中的 Firebase:CFNetwork SSLHandshake 失败,尽管配置似乎正确。

CFNetwork SSLHandshake 失败 iOS 9

iOS网络底层实现