Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/swiftsocket/SwiftSocket
The easy way to use sockets on Apple platforms
https://github.com/swiftsocket/SwiftSocket
socket swift swiftsocket
Last synced: 3 months ago
JSON representation
The easy way to use sockets on Apple platforms
- Host: GitHub
- URL: https://github.com/swiftsocket/SwiftSocket
- Owner: swiftsocket
- License: bsd-3-clause
- Created: 2014-08-21T10:20:39.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-12T12:10:31.000Z (11 months ago)
- Last Synced: 2024-08-06T01:19:11.926Z (3 months ago)
- Topics: socket, swift, swiftsocket
- Language: Swift
- Homepage:
- Size: 321 KB
- Stars: 1,673
- Watchers: 52
- Forks: 400
- Open Issues: 115
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SwiftSocket - simple socket library for apple swift lang. (WebSocket / Web View)
- awesome-swift - SwiftSocket - Simple TCP socket library. (Libs / Network)
- awesome-swift - SwiftSocket - Simple TCP socket library. (Libs / Network)
- awesome-ios-star - SwiftSocket - simple socket library for apple swift lang. (WebSocket / Web View)
- fucking-awesome-swift - SwiftSocket - Simple TCP socket library. (Libs / Network)
- awesome-swift-cn - SwiftSocket - simple TCP socket library. (Libs / Network)
- awesome-inspiration - SwiftSocket
- awesome-swift - SwiftSocket - The easy way to use sockets on Apple platforms ` 📝 a year ago` (Network [🔝](#readme))
README
# SwiftSocket
[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/SwiftSocket.svg)](https://cocoapods.org/pods/SwiftSocket)
[![CocoaPods Platforms](https://img.shields.io/cocoapods/p/SwiftSocket.svg)](https://img.shields.io/cocoapods/p/SwiftSocket.svg)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)SwiftSocket library provides as easy to use interface for socket based connections on server or client side.
Supports both TCP and UDP sockets.# Installation
## Cocoapods
Add this to your `Podfile`:
```ruby
pod 'SwiftSocket'
```
And run then `pod install`## Carthage
```ruby
github "swiftsocket/SwiftSocket"
```# Code examples
## Create client socket
``` swift
// Create a socket connect to www.apple.com and port at 80
let client = TCPClient(address: "www.apple.com", port: 80)
```
## Connect with timeout
You can also set timeout to `-1` or leave parameters empty (`client.connect()`) to turn off connection timeout.
``` swift
switch client.connect(timeout: 10) {
case .success:
// Connection successful 🎉
case .failure(let error):
// 💩
}
```## Send data
``` swift
let data: Data = // ... Bytes you want to send
let result = client.send(data: data)
```## Read data
``` swift
var data = client.read(1024*10) //return optional [Int8]
```## Close socket
``` swift
client.close()
```## Client socket example
``` swift
let client = TCPClient(address: "www.apple.com", port: 80)
switch client.connect(timeout: 1) {
case .success:
switch client.send(string: "GET / HTTP/1.0\n\n" ) {
case .success:
guard let data = client.read(1024*10) else { return }if let response = String(bytes: data, encoding: .utf8) {
print(response)
}
case .failure(let error):
print(error)
}
case .failure(let error):
print(error)
}```
## Server socket example (echo server)
``` swift
func echoService(client: TCPClient) {
print("Newclient from:\(client.address)[\(client.port)]")
var d = client.read(1024*10)
client.send(data: d!)
client.close()
}func testServer() {
let server = TCPServer(address: "127.0.0.1", port: 8080)
switch server.listen() {
case .success:
while true {
if var client = server.accept() {
echoService(client: client)
} else {
print("accept error")
}
}
case .failure(let error):
print(error)
}
}
```