0

iPhone と BeagleBone Black Wireless の間で 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エラーが発生します。)

4

1 に答える 1