Ну, я могу начать потоковую передачу данных в одноранговом соединении. Я получаю первый набор данных без проблем и использую его.
Проблема только в
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")
}
}