0

我正在尝试通过 TLS 在 iPhone 和 BeagleBone Black Wireless 之间发送数据。但是,我遇到了一些奇怪的问题。这个问题的问题是为什么stream(_:handle:)不调用委托方法。我已经阅读了文档和其他 StackOverflow 问题,但我的代码已经考虑了他们的问题。

这是我的变量:

private var readStream: Unmanaged<CFReadStream>?
private var writeStream: Unmanaged<CFWriteStream>?
private var inputStream: InputStream?
private var outputStream: OutputStream?

这是我打开流的代码:

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (socket.ipAddress as CFString), UInt32(socket.port), &readStream, &writeStream)

outputStream = writeStream?.takeRetainedValue()
inputStream = readStream?.takeRetainedValue()
outputStream?.delegate = self
inputStream?.delegate = self
outputStream?.schedule(in: .current, forMode: .default)
inputStream?.schedule(in: .current, forMode: .default)
outputStream?.open()
inputStream?.open()

这是我的代码中出现的委托方法(它由 Xcode 自动完成,所以没有问题):

private func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
    print("Received event code \(eventCode.rawValue)")
}

但是由于某种原因,这个方法永远不会被调用。事实上,我尝试发送数据,通过写入outputStream,BBBW实际上成功接收到消息!(虽然,如果我再次尝试发送消息,我会收到Connection reset by peer错误消息。)

4

1 回答 1

0

啊,我想通了!

问题是我做了委托方法private。一旦我摆脱了那个关键字,一切都解决了:)

于 2019-03-21T04:17:45.810 回答