先叠个甲,本人第一次在 V2EX 发布主题,而且可能技术不精,代码水平比较低但是还是希望能够尝试学习一下,所以请大家多多包涵,非常感谢!
我正在尝试使用 Rust 语言实现一个利用系统自带的 HTTP 客户端框架的 HTTP 异步请求框架,名字叫做 ALHC (开源)
考虑在 Windows 上使用 WinHTTP 库,在 macOS 上使用 CFNetwork 库,在 Linux 上想动态调用 libcurl (不过还没有开始做这个部分)
而在给 macOS 上编写实现时遇到了问题:
CFStreamCreateBoundPair
创建流的时候传入的容量值(transferBufferSize
)则会卡死而无法继续发送我已经尽力去查询了有关的信息,但是还是没有琢磨清楚,可以看看我找到的各种文档,希望能有所帮助:
如果有大佬能够鼎力相助的话感激不尽!
1
ecnelises 260 天前
我不清楚 CFNetwork 和你项目的具体细节,但你可以用 Swift 对应的上层库 URLSession 看有没有这个问题。印象里,在 Objective-C 时代 iOS 发网络请求有很多的坑。
另外建议你还是先统一用 curl ,我有个要用到加密库的项目,本来也想在不同平台用各自的系统库,但这样做至少在初期弊大于利,需要多实现很多代码,行为也不一致,万一有什么安全问题开源库升级也比系统库方便,用系统库仅存的好处可能就是目标二进制体积更小一些,但 curl 本身也不大。 |
2
SteveXMH OP @ecnelises 是的,我一开始是为了编写 GUI 程序才有了这样一个想法来编写这样的框架,毕竟是个人项目所以并不是很追求高度的稳定性,至少在 Windows 上我的 GUI 程序能够借助系统自带的 WinHTTP 库减少大约 200KB 的大小(为了足够的便携性所以能尽量小就最好),而原先绑定的就是 curl 静态库。
而且可能是系统的库有特殊优化还是我原先使用的绑定写的很拉跨,下载性能提升非常明显(可能不太好展示) 我有简单考虑过参考更高阶层的 URLSession 但是我不是很熟悉 Swift ,Obj-C 也是勉强能理解一些基本的面向对象 考虑到苹果一贯对文档和接口的作风,包装的类型肯定基本没什么大问题,越底层那种资料就很难找或者难找到对自己有帮助或者价值的信息。 |
3
nieyujiang 260 天前 via iPhone
CFnetwork 不建议用,很多东西已经标记为废弃了
|