NSStream TCP客户端套接字无法正常工作

时间:2016-01-03 21:02:15

标签: ios swift tcp nsstream

我正在尝试构建一个与我网络上的TCP服务器通信的应用程序。

我使用的代码是:

let addr = "192.168.1.104"
let port = 101010
var inp: NSInputStream?
var out: NSOutputStream?

@IBAction func Connect_Button(sender: AnyObject) {
     NSStream.getStreamsToHostWithName(addr, port: port, inputStream: &inp, outputStream: &out)
    let inputStream = inp!
    let outputStream = out!

    inputStream.open()
    outputStream.open()

    var buffer: [UInt8] = [92,72,69,76,76,79,49,50,51,33,47] //"\Hello123!/" in ASCII - hardcoded to test.
    outputStream.write(&buffer, maxLength: buffer.count)
    let bufferSize = 1024
    var inputBuffer = Array<UInt8>(count:bufferSize, repeatedValue: 0)

    let bytesRead = inputStream.read(&inputBuffer, maxLength: bufferSize)
    //encode as string and print
    var readByte :UInt8 = 0

    Current_Text.text = ""
    while inputStream.hasBytesAvailable {
        Current_Text.text? += String(inputStream.read(&inputBuffer, maxLength: 1))
    }
}

我不会将链接放入,以防它违反任何规则。但它来自Reddit帖子。

问题1)当我按下我的UIButton来触发通信时,它几乎一直都会失败。在10次测试中,我获得3次成功传输,7次&#34;挂起&#34;。不确定是什么导致这些&#34;挂起&#34;在沟通,但它要求我退出应用程序并重新运行。

问题2)我的服务器返回的字符串(&#34; OK&#34;,&#34; ERROR&#34; ...)不是我的服务器读取的代码。我认为这是由于我缺乏知识。我还在阅读它是如何工作的。

问题3)我需要这个通信代码来执行不同的程序线程,因为一切都在执行时停止。这段代码可以在dispatch_async上运行吗?目前我直接测试IBAction中的代码,但我打算将它放在一个类/函数(单独的swift文件)中,然后返回数据。

0 个答案:

没有答案