YazdanSwiftSocket
YazdanSwiftSocket 库提供了一个易于使用的界面,用于在服务端或客户端创建基于套接字的连接。支持 TCP 和 UDP 套接字。
安装
CocoaPods
将以下内容添加到您的 Podfile
pod 'YazdanSwiftSocket'
然后运行 pod install
Carthage
github "yazdanv/YazdanSwiftSocket"
代码示例
创建客户端套接字
// 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: 1.0) {
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]
读取到特定分隔符之前的字符串
if let string = client.readString(until: "delimiter") {
print(string) //the data from socket up until "delimiter"
}
读取所有传入的字符串
client.onMessage {msg in
print(msg) //Reads all the incoming data and when there is no more incoming data it will convert it into string, then calls this closure with the string
}
关闭套接字
client.close()
客户端套接字示例
let client = TCPClient(address: "www.apple.com", port: 80)
switch client.connect(timeout: 1.5) {
case .success:
client.onMessage {msg in
print(msg)
}
client.send(string: "GET / HTTP/1.0\n\n" )
case .failure(let error):
print(error)
}
服务器套接字示例(回显服务器)
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)
}
}