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