簡體   English   中英

如何在Swift中通過tcp socket讀取字符串

[英]How to read in a string over tcp socket in Swift

如果我有一個java tcp服務器發送一些文本,我如何從NSInputStream讀取該文本並將其存儲在字符串中?

這是我有一大堆代碼,但我不確定如何從這里獲取字符串:

NSStream.getStreamsToHostWithName(addr, port: port, inputStream: &inp, outputStream: &out)

let inputStream = inp!
let outputStream = out!
inputStream.open()
outputStream.open()

var readByte :UInt8 = 0
while inputStream.hasBytesAvailable {
    inputStream.read(&readByte, maxLength: 1)
}

使用您的代碼,每次循環內部只能讀取1個字節。 如果你需要讀取所有數據,你可以這樣做:

NSStream.getStreamsToHostWithName(addr, port: port, inputStream: &inputStream, outputStream: &outputStream)
inputStream!.open()
outputStream!.open()

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) {
    let bufferSize = 1024
    var inputBuffer = Array<UInt8>(count:bufferSize, repeatedValue: 0)
    while true {
        let bytesRead = self.inputStream!.read(&inputBuffer, maxLength: bufferSize)

        // Here get string from byte Array
        let responseString = NSString(bytes: inputBuffer, length: inputBuffer.count, encoding: NSUTF8StringEncoding) as! String
        println("Data from Stream = \(responseString)")
    }
}

這是這行:

let responseString = NSString(bytes: inputBuffer, length: inputBuffer.count, encoding: NSUTF8StringEncoding) as! String

從輸入字節數組創建String

看看這些令人敬畏的圖書館,它們將拯救你的生命。

斯威夫特: 紅蜘蛛

Objective-C: Jetfire SocketRocket

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM