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:
And run then pod install
Carthage
github "swiftsocket/SwiftSocket"
Code examples
Create client socket
// 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.
switch client.connect(timeout: 10) { case .success: // Connection successful 🎉 case .failure(let error): // 💩 }
Send data
let data: Data = // ... Bytes you want to send let result = client.send(data: data)
Read data
var data = client.read(1024*10) //return optional [Int8]
Close socket
Client socket example
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)
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) } }