Я пытаюсь передать данные между iPhone и беспроводной связью BeagleBone Black по протоколу TLS.Однако я сталкиваюсь с некоторыми странными проблемами.Проблема, о которой этот вопрос, состоит в том, почему метод делегата 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
.)