写了一个纯 Swift 的异步 TCP 框架并支持与 KEXT 通信

2017-08-01 17:10:12 +08:00
 jedihy

本来只想写一个跟 osx 的 KEXT 通信的 class,来重写之前写的 Proximac,读了一下 CocoaAsyncSocket 的源码就把这个框架写完了。

这个框架是基于 DispatchSource 来监听描述符实现的,跟 CocoaAsyncSocket 的函数签名几乎一模一样,但是没有超时的功能,需要自己写 timer,以后可能会加入。

框架有几个特点:

  1. IPv6 支持,listen 全部是在 v6 上的,可以同时监听 v4/v6 的连接。
  2. 自带 DNS 解析和 CocoaAsyncSocket 一样,多线程并发,并根据 DNS 结果发起 v4/v6 connect。
  3. 完全基于 delegate,与 CocoaAsyncSocket 也一样。
  4. 支持 Kernel Extension 通信,方便接收内核的通知与内核交互。

框架目前只做了单元测试,暂无问题,但是作为一个 network 的库,是只能经过长时间的 debug 来完善的。 支持 CocoaPods 和 Carthage 两种方式安装。

最后,github 地址: https://github.com/csujedihy/SwiftDSSocket

3747 次点击
所在节点    分享创造
7 条回复
kfll
2017-08-02 09:34:19 +08:00
不明觉厉

赞一个
jedihy
2017-08-08 00:38:08 +08:00
@kfll 谢谢!
lj61785636
2017-08-11 09:16:00 +08:00
好像很厉害的样子,已 star
xiubin
2017-08-11 09:34:30 +08:00
Proximac 是用来 FQ 的?
pqee
2017-08-11 11:13:27 +08:00
支持。

需要使用 Darwin 呀,就是说只能在 MAC 上跑。。。
jedihy
2017-08-11 12:39:28 +08:00
@xiubin 跟 Proxifier 差不多
@pqee 暂时只在 osx /ios 上跑,linux 其实是可以兼容的,用 Glibc 的就能跑,但是代码我还得改一下,以后会支持,顺便也想看看 swift4 的 server api 会有什么变化。
yedashuai
2017-08-11 18:25:26 +08:00
好棒啊,默默的点了一个 star,并关注了楼主

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

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

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

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

© 2021 V2EX