Socket.swift
用 Swift 编写的 POSIX 套接字包装器。
特性
- TLS/SSL 支持
- 支持 Linux,iOS,macOS 和 tvOS
- 代码干净且易于理解
如果您觉得需要实现某项功能,只需打开问题或提交 PR
示例
let server = try Socket(.inet, type: .stream, protocol: .tcp) // create server socket
try server.set(option: .reuseAddress, true) // set SO_REUSEADDR to 1
try server.bind(port: 8090, address: nil) // bind 'localhost:8090' address to the socket
try server.listen() // allow incoming connections
let client = try Socket(.inet, type: .stream, protocol: .tcp) // create client socket
try client.connect(port: 8090) // connect to localhost:8090
let clientAtServerside = try server.accept() // accept client connection
let helloBytes = ([UInt8])("Hello World".utf8)
try clientAtServerside.write(helloBytes) // sending bytes to the client
clientAtServerside.close()
var buffer = [UInt8](repeating: 0, count: helloBytes.count) // allocate buffer
let numberOfReadBytes = try client.read(&buffer, size: helloBytes.count)
print(numberOfReadBytes == helloBytes.count) // true
print(buffer == helloBytes) // true
client.close()
server.close()
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
使用 CocoaPods 将 Socket.swift 集成到您的 Xcode 项目中,请将其指定在您的 Podfile
中
source 'https://github.com/CocoaPods/Specs.git'
target '<Your Target Name>' do
pod 'Socket.swift', '~> 2.4.0'
end
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,用于构建您的依赖并提供二进制框架。
您可以使用 Homebrew 安装 Carthage,以下命令
$ brew update
$ brew install carthage
使用 Carthage 将 Socket.swift 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "BiAtoms/Socket.swift" ~> 2.4.0
运行 carthage update
来构建框架,并将构建的 SocketSwift.framework
拖动到您的 Xcode 项目中。
Swift Package Manager
Swift Package Manager 是一个用于自动分发 Swift 代码的工具,集成了 swift
编译器。它目前处于早期开发阶段,但 Socket.swift 支持在受支持的平台上使用。
设置您的 Swift 包后,将 Socket.swift 添加为依赖项就像将其添加到您的 Package.swift
的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/BiAtoms/Socket.swift.git", from: "2.4.0")
]
手动操作
只需将 Sources 文件夹中的文件拖放到当前目录。
作者
- Orkhan Alikhanov - 初始工作 - OrkhanAlikhanov
有关参与此项目的贡献者列表,请参阅 此处。
许可证
本项目受MIT许可证的许可 - 请参阅LICENSE文件以了解详细信息