Delegado de flujo no receptivo en Swift
Así que estaba jugando con sockets en Swift e intentando conectar la aplicación con mi servidor. Estaba haciendo que la aplicación se conectara a la dirección IP del servidor y usabanetcat
en el servidor para probar. Durante la ejecución, la salida de la consola de la aplicación mostró que se había conectado con éxito al servidor. Sin embargo, el delegado de flujo no parece responder. Cuando escribí ennetcat
, la consola de la aplicación no imprimió nada. He buscado durante bastante tiempo y descubrí que mi implementación es bastante similar a la de otros. Quizás me estoy perdiendo algo aquí que no veo.
Cualquier idea sobre este problema sería muy apreciada.
El código se adjunta a continuación:
import UIKit
class ViewController: UIViewController, StreamDelegate {
let addr:String = "52.34.56.78"
let port:Int = 1234
var inputStream: InputStream?
var outputStream: OutputStream?
override func viewDidLoad() {
super.viewDidLoad()
self.connect(host: addr, port: port)
}
func connect(host: String, port: Int) {
Stream.getStreamsToHost(withName: host, port: port, inputStream: &inputStream, outputStream: &outputStream)
if inputStream != nil && outputStream != nil {
inputStream!.delegate = self
outputStream!.delegate = self
inputStream!.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
outputStream!.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
inputStream!.open()
outputStream!.open()
print("successfully connected")
}
else {
print("connection unsuccessful")
}
}
func stream(aStream: Stream, handleEvent eventCode: Stream.Event) {
if aStream === inputStream {
switch eventCode {
case Stream.Event.errorOccurred:
print("input: ErrorOccurred: \(aStream.streamError?.localizedDescription)")
break
case Stream.Event.openCompleted:
print("input: OpenCompleted")
break
case Stream.Event.hasBytesAvailable:
print("input: HasBytesAvailable")
break
default:
break
}
}
else {
print("unknown stuff happened")
}
}
}