SwiftSocket 2.0.2

SwiftSocket 2.0.2

测试已测试
语言语言 SwiftSwift
许可证 BSD
发布最后发布2017年7月
SwiftSwift 版本3.0
SPM支持 SPM

Dan Shevlyuk 维护。



SwiftSocket

SwiftSocket 库提供了一个易于使用的界面,用于在服务器或客户端实现基于套接字连接。支持 TCP 和 UDP 套接字。

安装

代码示例

创建客户端套接字

// Create a socket connect to www.apple.com and port at 80
let client = TCPClient(address: "www.apple.com", port: 80)

带有超时的连接

您还可以将超时设置为 -1 或保留参数为空(client.connect()),以关闭连接超时。

 switch client.connect(timeout: 10) {
   case .success:
     // Connection successful 🎉
   case .failure(let error):
     // 💩
 }

发送数据

let data: Data = // ... Bytes you want to send
let result = client.send(data: data)

读取数据

var data = client.read(1024*10) //return optional [Int8]

关闭套接字

client.close()

客户端套接字示例

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)
}

服务器套接字示例(Echo 服务器)

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)
    }
}