iOS swift socket通讯:发布outstream



我遵循本教程进行了最简单的套接字通信,仅用于交换字符串消息。然而,当我写信给outstream时,它似乎永远不会发布,直到我杀死了应用程序——然后服务器会在一个区块中接收所有内容。我寻找解决方案,发现了类似的问题和问题,但没有解决方案。这是我的代码:

class Peer: NSObject {
weak var delegate: PeerDelegate?
var inputStream: InputStream!
var outputStream: OutputStream!
var username = ""
let maxReadLength = 4096
func setupNetworkCommunication() {
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,"192.168.43.1" as CFString,6000,&readStream,&writeStream)
inputStream = readStream!.takeRetainedValue()
outputStream = writeStream!.takeRetainedValue()
inputStream.schedule(in: .current, forMode: .common)
outputStream.schedule(in: .current, forMode: .common)
inputStream.open()
outputStream.open()
inputStream.delegate = self

}
func sendText(text: String) {
print("Sending", text)
let data = text.data(using: .utf8)!
data.withUnsafeBytes {
guard let pointer = $0.baseAddress?.assumingMemoryBound(to: UInt8.self) else {
print("Error sending text")
return
}
outputStream.write(pointer, maxLength: data.count)
print("DONE")
}
}
}

正如您可能注意到的,还有一个委托,它监视流并响应传入的数据。我不能简单地来回发送字符串,这让我很困扰。它可能是服务器端的问题,等待更多,但如果我用Android运行它,它就可以在没有额外功能的情况下运行。我试图完成、发布并关闭流,以产生类似于应用程序杀死的东西,但没有成功。在Java中似乎没有flush命令。你知道问题出在哪里吗?

好的,解决方案似乎是用换行符\n 结束字符串

最新更新