2015-11-07 75 views
4

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

下面是代碼,我有一大塊,但我真的不知道如何從這裏得到的字符串:

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

看一看這些真棒圖書館,他們會拯救你的生命。

夫特: Starscream

目的-C: Jetfire SocketRocket

+0

的紅蜘蛛庫是一個的WebSockets客戶端。它專門用於與Websockets服務器進行通信,而不是用於進行任意的TCP連接。 –

3

與您的代碼就可以讀取你的循環中,每次只有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)") 
    } 
} 

這裏thisl行:

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

創建輸入字節數組String

相關問題