Swiftpack.co -  Balancingrock/SwifterSockets as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Balancingrock/SwifterSockets
A collection of socket utilities in Swift.
.package(url: "https://github.com/Balancingrock/SwifterSockets.git", from: "1.1.3")

SwifterSockets

A collection of socket utilities in pure Swift

SwifterSockets is part of the Swiftfire webserver project.

The Swiftfire website

The reference manual

SwifterSockets is also used in our PortSpy application in the App Store. Buyers of PortSpy get the complete sources of the project (Xcode project) used to build the App.

If you need secure connections, check out SecureSockets which is build on top of SwifterSockets (and OpenSSL).

If you are new to socket programming, check out our blog series which starts here

Features

  • Shields the Swift application from the complexity of the Unix socket calls.
  • Directly interfaces with the POSIX calls using:
    • connectToTipServer
    • tipTransfer
    • tipReceiverLoop
    • tipAccept
    • setupTipServer
  • Implements a framework on top of the POSIX calls with:
    • Connection (class)
    • connectToTipServer (returns a connection)
    • TipServer (class, produces connections)
  • Includes replacements for the FD_SET, FD_CLR, FD_ZERO and FD_ISSET macro's.
  • Builds as a library using the Swift Package Manager (SPM)

Installation

SwifterSockets can be used by the Swift Package Manager. Just add it to your package manifest as a dependency.

Alternatively you can clone the project and generate a Xcode framework in the following way:

  1. First clone the repository and create a Xcode project:

     $ git clone https://github.com/Balancingrock/SwifterSockets
     $ cd SwifterSockets
     $ swift package generate-xcodeproj
    
  2. Double click that project to open it. Once open set the Defines Module to 'yes' in the Build Settings before creating the framework. (Otherwise the import of the framework in another project won't work)

  3. In the project that will use SwifterSockets, add the SwifterSockets.framework by opening the General settings of the target and add the SwifterSockets.framework to the Embedded Binaries.

  4. In the Swift source code where you want to use it, import SwifterSockets at the top of the file.

Version history

No new features planned. Updates are made on an ad-hoc basis as needed to support Swiftfire development.

1.1.3

  • Reduced suported macOS platform to v10_10.

1.1.2

  • Added platforms, swift version and LICENSE file.

1.1.1

  • Added linux compatibility

1.1.0

  • Removed SocketAddress.swift (due to warnings in Swift 5.2)
  • Switched to Swift.Result instead of BRUtils.Result
  • Introduced SwifterSocketsResult
  • Removed now superfluous BRUtils dependency

1.0.2

  • Documenation updates

1.0.1

  • Fixed website link in header

1.0.0

  • Restructured for Swiftfire 1.0.0

GitHub

link
Stars: 59
Last commit: 48 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

Release 1.0.0
1 year ago

Swiftfire -and all its supporting packages- have been issued in their release 1.0.0

SwifterSockets has undergone some file-renaming and some reorganization. Otherwise the functionality itself is unchanged.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API