Принимающая сторона в потоке данных MultiPeer Connectivity всегда возвращает Stream.Event.hasBytesAvailable Swift4 - PullRequest
0 голосов
/ 12 ноября 2018

Ну, я могу начать потоковую передачу данных в одноранговом соединении. Я получаю первый набор данных без проблем и использую его.

Проблема только в

    case Stream.Event.hasBytesAvailable:

стреляет на стороне получателя, поэтому я не могу знать, используются ли полученные данные или нет на стороне отправителя.

Кроме того,

      self.outputStream?.streamStatus.rawValue

возвращается открытым.

Получатель продолжает получать новые данные, которые накапливаются в ReceiveData. После каждого

      let writtenData = data.withUnsafeBytes { self.outputStream?.write($0, maxLength: data.count) } 

Между прочим, записанные данные никогда не были равны 0 или -1. Мы всегда пишем правильное значение.

Предполагается, что мы используем данные и сбрасываем полученные данные и ждем в отправителе, пока не будет готова сторона получателя.

Он чувствует, что получатель должен сообщить отправителю, что данные используются и готовы к потоковой передаче, но я не мог найти, как это сделать до сих пор.

  var receivedData = NSMutableData()

  func stream(_ aStream: Stream, handle eventCode: Stream.Event){

     switch(eventCode){

        case Stream.Event.hasBytesAvailable:

        let input = aStream as! InputStream
            var buffer = [UInt8](repeating: 0, count: 2048)
            let len  = input.read(&buffer, maxLength: buffer.count)

            receivedData.append(buffer, length: len)


        case Stream.Event.endEncountered:

        case Stream.Event.hasSpaceAvailable:

        case Stream.Event.openCompleted:

        case Stream.Event.errorOccurred:

        default: 

            show(text: "default")

        }

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...