本来只想写一个跟 osx 的 KEXT 通信的 class,来重写之前写的 Proximac,读了一下 CocoaAsyncSocket 的源码就把这个框架写完了。
这个框架是基于 DispatchSource 来监听描述符实现的,跟 CocoaAsyncSocket 的函数签名几乎一模一样,但是没有超时的功能,需要自己写 timer,以后可能会加入。
框架有几个特点:
框架目前只做了单元测试,暂无问题,但是作为一个 network 的库,是只能经过长时间的 debug 来完善的。 支持 CocoaPods 和 Carthage 两种方式安装。
最后,github 地址: https://github.com/csujedihy/SwiftDSSocket
iOS 9
and OS X 10.11
for better IPv6 support. platform :ios, '10.0'
target 'MyApp' do
use_frameworks!
pod 'SwiftDSSocket'
end
github "csujedihy/SwiftDSSocket"
http://cocoadocs.org/docsets/SwiftDSSocket/
The following example creates a default SwiftDSSocket
instance and then immediately starts listening on port 9999
and echoes back everything sent to this server.
Simply use telnet 127.0.0.1 9999
to test it.
import Cocoa
import SwiftDSSocket
class ViewController: NSViewController {
var client: SwiftDSSocket?
var server: SwiftDSSocket?
let ServerTag = 0
override func viewDidLoad() {
super.viewDidLoad()
server = SwiftDSSocket(delegate: self, delegateQueue: .main, type: .tcp)
try? server?.accept(onPort: 9999)
}
}
extension ViewController: SwiftDSSocketDelegate {
func socket(sock: SwiftDSSocket, didAcceptNewSocket newSocket: SwiftDSSocket) {
newSocket.readData(tag: ServerTag)
}
func socket(sock: SwiftDSSocket, didRead data: Data, tag: Int) {
sock.write(data: data, tag: ServerTag)
sock.readData(tag: ServerTag)
}
}
1
kfll 2017-08-02 09:34:19 +08:00 via Android
不明觉厉
赞一个 |
3
lj61785636 2017-08-11 09:16:00 +08:00 1
好像很厉害的样子,已 star
|
4
xiubin 2017-08-11 09:34:30 +08:00
Proximac 是用来 FQ 的?
|
5
pqee 2017-08-11 11:13:27 +08:00
支持。
需要使用 Darwin 呀,就是说只能在 MAC 上跑。。。 |
6
jedihy OP |
7
yedashuai 2017-08-11 18:25:26 +08:00 1
好棒啊,默默的点了一个 star,并关注了楼主
|