Swift 基于的简单套接字库。
SwiftSockets 是如何将 Swift 与原始 C API 集成的示例。更多地是为了窃取 Swift 编码想法,而不是真正在现实世界项目中使用代码。在大多数现实世界的 Swift 应用中,您有 Cocoa 的访问权限,请使用它。
它还附带了一个精彩的 Echo 守护进程作为演示,如果您需要聊天,它始终都在。
注意:这是我第一个 Swift 项目。欢迎大家对我的代码提出改进建议。我期待很多很多 :-)
该项目包括三个目标
更新支持 Swift 0.2.2(即 Xcode 7.3)。
Linux 用户注意:此项目可以通过 Swift Package Manager 以及使用嵌入的 makefiles 使用 Swift 2.2 版本编译。请确保您已将 Grand Central Dispatch 安装到您的 Swift 安装中。在 Linux 上,包含的 ARIEchoServer/ARIFetch 应用无法编译,但这个可以:SwiftyEchoDaemon。
一个包含套接字类和相关扩展的框架。它从 SOPE NGStreams 库中汲取了一些灵感。
服务器示例
let socket = PassiveSocket<sockaddr_in>(address: sockaddr_in(port: 4242))!
.listen(dispatch_get_global_queue(0, 0), backlog: 5) {
print("Wait, someone is attempting to talk to me!")
$0.close()
print("All good, go ahead!")
}
客户端示例
let socket = ActiveSocket<sockaddr_in>()!
.onRead { sock, _ in
let (count, block, errno) = sock.read() // $0 for sock doesn't work anymore?
guard count > 0 else {
print("EOF, or great error handling \(errno).")
return
}
print("Answer to ring,ring is: \(count) bytes: \(block)")
}
.connect("127.0.0.1:80") { socket in
socket.write("Ring, ring!\r\n")
}
要在您的 SPM 项目中使用 SwiftSockets,只需将其添加为您 Package.swift
文件中的依赖项即可
import PackageDescription
let package = Package(
name: "SwiftyEcho",
targets: [],
dependencies: [
.Package(url: "https://github.com/AlwaysRightInstitute/SwiftSockets.git",
majorVersion: 0, minor: 1
)
]
)
出色的回声服务器。这个实际上是 Cocoa 应用。编译并运行它,然后在 Terminal.app 中通过 telnet 1337
连接到它。
用Swift编写的最优秀的bezt回声守护程序 - SPM版本。这是一个演示如何在使用Linux或OSX的SwiftSockets Swift包管理器版本。如果没有使用SPM,只需通过makefile构建SwiftSockets即可。
优秀的回声服务器。通过make
编译它,通过make run
运行它,然后在Terminal.app中通过telnet 1337
连接到它。
将套接字连接到某些端点,发送带有一些很酷的头的HTTP/1.0 GET请求,然后显示服务器发送的结果。Cocoa应用程序。
为什么用HTTP/1.0?避免在www.apple.com上进行重定向 :-)
这是一个为了熟悉Swift的实验。为了检查是否可以在“纯”Swift中实现真正的东西。这意味着不使用任何Objective-C Cocoa类(不使用NS主义)。或者换句话说:你能否使用Swift,而不需要用Objective-C编码所有“真实”的代码? :-)