测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年12月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 jedihy 维护。
SwiftDSSocket 是一个基于 DispatchSource 的纯 Swift 构建 异步 套接字框架。函数签名与 CocoaAsyncSocket 非常类似,因为我通过学习 CocoaAsyncSocket 的源代码来实现这个框架。构建这个框架的最初想法是由网络库与 KEXT (NKE) 通信的需要来驱动我的 Proximac 项目,但我找到的框架都不支持这一点。因此,我决定实现自己的框架来实现这一点。
注意:这个框架仍在积极开发中。它只通过了我的单元测试,可能存在各种错误。
要将 SwiftDSSocket 包含到 Swift 包管理器包中,将其添加到在您的 Package.swift
文件中定义的 dependencies
属性中。例如
dependencies: [
.Package(url: "https://github.com/csujedihy/SwiftDSSocket", "x.x.x")
]
要使用 CocoaPods 在项目中包含 SwiftDSSocket,只需将 SwiftDSSocket
添加到您的 Podfile
中,例如
target 'MyApp' do
use_frameworks!
pod 'SwiftDSSocket'
end
要使用 Carthage 在项目中包含 SwiftDSSocket,请向您的 Cartfile
中添加一行,其中包含 GitHub 组织和项目名称以及版本。例如
github "csujedihy/SwiftDSSocket"
https://csujedihy.github.io/SwiftDSSocket/
以下示例创建了一个默认的 SwiftDSSocket
实例,然后立即开始监听端口 9999
,并回显发送到该服务器的所有内容。
您可以使用 telnet 127.0.0.1 9999
连接到此服务器并发送您想要的任何内容。
import Cocoa
import SwiftDSSocket
class ViewController: NSViewController {
var server: SwiftDSSocket?
var newClient: 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) {
newClient = newSocket
newSocket.readData(tag: ServerTag)
}
func socket(sock: SwiftDSSocket, didRead data: Data, tag: Int) {
sock.write(data: data, tag: ServerTag)
sock.readData(tag: ServerTag)
}
}
提示:查看 Demo
文件夹以查看不同环境下的更多示例。