在swift NSNetService类中如何使用getInoutStream发送数据

时间:2016-04-29 07:59:16

标签: swift nsnetservice

目前我正在开发一个程序,我使用NSNetService类连接两个IOS设备。我能够连接两个设备,但我不知道如何使用getInoutStream函数发送数据。任何伙伴都可以帮助我。

1 个答案:

答案 0 :(得分:1)

为什么不使用multipeer?对于您正在尝试的内容,这是一个更简单的解决方案。 NSNetService也有一些已知的错误。但是,您可以通过在NSNetService上设置Bonjour连接来在两者之间发送数据。 getInputStream方法需要类型为UnsafeMutablePointer:

的参数
    org 00H

    MOV    P3DIR, #0x00   ; Set direction of P3...

Start:
    JB    P1.0,   P1Set
    JB    P2.0,   P1NotSetP2Set
    SJMP  None
P1Set:
    JB    P2.0,   P1SetP2Set
    SJMP  P1SetP2NotSet
P1SetP2Set:
    SETB  P3.0
    CLRB  P3.1
    CLRB  P3.2
    SJMP  Start
P1SetP2NotSet:
    CLR   P3.0
    SETB  P3.1
    CLR   P3.2
    SJMP  Start
P1NotSetP2Set:
    CLR   P3.0
    CLR   P3.1
    CLR   P3.2
    SJMP  Start
None:
    SETB  P3.0
    CLR   P3.1
    SETB  P3.1
    SJMP  Start

    end

然后只使用内存流写入数据,它将被传递给侦听器端口。

这是完成的代码:

此功能在127.0.0.1

上启动连接
    public func getInputStream(inputStream: UnsafeMutablePointer<NSInputStream?>, outputStream: UnsafeMutablePointer<NSOutputStream?>) -> Bool

var inputStream : NSInputStream?
var outputStream : NSOutputStream?

let success = service.getInputStream(&inputStream, outputStream: &outputStream)

这是针对流IO:

func initNetworkCommunication(){
    var host : CFString = "127.0.0.1"
    var port : UInt32 = 7001
    var readstream : Unmanaged<CFReadStream>?
    var writestream : Unmanaged<CFWriteStream>?
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readstream, &writestream)

    inputstream = readstream!.takeRetainedValue()
    outputstream = writestream!.takeRetainedValue()

    inputstream.delegate = self
    outputstream.delegate = self


    inputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
    outputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)

    inputstream.open()