0
我在Swift 3中编写了一个非常简单的基于套接字的命令行工具,但是我的流并没有调用委托方法。例如,当我检查字节是否可用时,有可用的字节,但委托方法尚未被调用。这里是我的连接代码:Swift 3 Socket问题
func connect() {
print("Socket Connection")
let ipAddress = "127.0.0.1" as CFString
let portNumber: UInt32 = 8080
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, ipAddress, portNumber, &readStream, &writeStream)
self.inputStream = readStream!.takeRetainedValue()
self.outputStream = writeStream!.takeRetainedValue()
self.inputStream?.delegate = self
self.outputStream?.delegate = self
self.inputStream?.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.outputStream?.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.inputStream?.open()
self.outputStream?.open()
}
你可以尝试用mainRunLoop而不是当前的。 – Hasya
我尝试过,但它有相同的结果。 – wt65074
我建议你去https://github.com/tidwall/SwiftWebSocket,使用这个包装类,我用它在我的项目。它非常耐用和坚固耐用。 – Hasya