2

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

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

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

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

4

1 回答 1

0

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

另一方面,“按照你所知道的去做。” 如果您更愿意在 BSD 套接字或 GCDdispatch_io习语中工作,那么一定要继续前进并取得成功。

于 2013-10-26T13:09:33.243 回答