请教如何使用 CFNetwork 来实现异步发出多个流式请求且能够返回流式数据

46 天前
 SteveXMH

先叠个甲,本人第一次在 V2EX 发布主题,而且可能技术不精,代码水平比较低但是还是希望能够尝试学习一下,所以请大家多多包涵,非常感谢!

我正在尝试使用 Rust 语言实现一个利用系统自带的 HTTP 客户端框架的 HTTP 异步请求框架,名字叫做 ALHC (开源)

考虑在 Windows 上使用 WinHTTP 库,在 macOS 上使用 CFNetwork 库,在 Linux 上想动态调用 libcurl (不过还没有开始做这个部分)

而在给 macOS 上编写实现时遇到了问题:

我已经尽力去查询了有关的信息,但是还是没有琢磨清楚,可以看看我找到的各种文档,希望能有所帮助:

如果有大佬能够鼎力相助的话感激不尽!

843 次点击
所在节点    程序员
3 条回复
ecnelises
46 天前
我不清楚 CFNetwork 和你项目的具体细节,但你可以用 Swift 对应的上层库 URLSession 看有没有这个问题。印象里,在 Objective-C 时代 iOS 发网络请求有很多的坑。

另外建议你还是先统一用 curl ,我有个要用到加密库的项目,本来也想在不同平台用各自的系统库,但这样做至少在初期弊大于利,需要多实现很多代码,行为也不一致,万一有什么安全问题开源库升级也比系统库方便,用系统库仅存的好处可能就是目标二进制体积更小一些,但 curl 本身也不大。
SteveXMH
46 天前
@ecnelises 是的,我一开始是为了编写 GUI 程序才有了这样一个想法来编写这样的框架,毕竟是个人项目所以并不是很追求高度的稳定性,至少在 Windows 上我的 GUI 程序能够借助系统自带的 WinHTTP 库减少大约 200KB 的大小(为了足够的便携性所以能尽量小就最好),而原先绑定的就是 curl 静态库。

而且可能是系统的库有特殊优化还是我原先使用的绑定写的很拉跨,下载性能提升非常明显(可能不太好展示)

我有简单考虑过参考更高阶层的 URLSession 但是我不是很熟悉 Swift ,Obj-C 也是勉强能理解一些基本的面向对象

考虑到苹果一贯对文档和接口的作风,包装的类型肯定基本没什么大问题,越底层那种资料就很难找或者难找到对自己有帮助或者价值的信息。
nieyujiang
46 天前
CFnetwork 不建议用,很多东西已经标记为废弃了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029761

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX