unten ist der Code, den ich habe.IOS Stream Einfrieren, wenn nicht swift 3
Es funktioniert perfekt, wenn die IP des Servers korrekt ist, aber in einem Fall, in dem die IP nicht korrekt ist, friert die App ein, sobald es versucht, die Nachricht zu senden, und wenn das auskommentiert ist, dann erneut beim Versuch bekommen.
Ich muss etwas installieren, um den Benutzer zu informieren, dass die IP falsch ist, und nicht die App einfrieren.
Ich habe einen Switch-Fall versucht, habe ich versucht zu überprüfen .hasBytesAvailable und .hasSpaceAvailable, die beide falsch zurückgeben, wie auch ein paar andere Vorschläge im Netz. Wenn jemand Hilfe anbieten kann, wäre das großartig.
Oh nur ein FYI das ist alles in Swift 3
import UIKit
import Foundation
class SocketTest{
var output: NSString?
func SocketWorks(test: String) -> NSString{
output = "Hello"
let CDIP = CoreDataUDP()
let serverIP = CDIP.getIP()
var server = serverIP
var port = 5000
//var host :NSHost = NSHost(address: server)
var inp :InputStream?
var out :OutputStream?
Stream.getStreamsToHost(withName: server, port: port, inputStream: &inp, outputStream: &out)
let inputStream = inp!
let outputStream = out!
inputStream.open()
defer {
inputStream.close()
}
outputStream.open()
defer {
outputStream.close()
}
let messageSend: String = test
let messageSendCount = messageSend.characters.count
outputStream.write(messageSend, maxLength: messageSendCount)
let bufferSize = 1024
var buffer = Array<UInt8>(repeating: 0, count: bufferSize)
let bytesRead = inputStream.read(&buffer, maxLength: bufferSize)
if bytesRead >= 0 {
output = NSString(bytes: &buffer, length: bytesRead, encoding: String.Encoding.utf8.rawValue)
} else {
NSLog("Its not right yet", output!)
}
print(output!)
return output!
}
}