iOS-InputStream:没有可用的缓冲区空间(55)
我知道有很多关于委托方法没有被调用的问题,但这是一个委托方法的问题,它最初被调用,然后停止被调用 所以基本上我有一个创建的流iOS-InputStream:没有可用的缓冲区空间(55),ios,swift,streaming,inputstream,outputstream,Ios,Swift,Streaming,Inputstream,Outputstream,我知道有很多关于委托方法没有被调用的问题,但这是一个委托方法的问题,它最初被调用,然后停止被调用 所以基本上我有一个创建的流 outputStream = try self.appDelegate.connectionManager.sessions[sessionIndex!].startStream(withName: "newStream", toPeer: peerID!) 创建流时,我调用了委托方法,该方法执行以下操作。我有打印的语句,而且这个方法似乎运行得很好,所以我认为问题不在这
outputStream = try self.appDelegate.connectionManager.sessions[sessionIndex!].startStream(withName: "newStream", toPeer: peerID!)
创建流时,我调用了委托方法,该方法执行以下操作。我有打印的语句,而且这个方法似乎运行得很好,所以我认为问题不在这里:
func startedStreamWithPeer(_ peerID: MCPeerID, inputStream: InputStream) {
self.recordingQueue.sync {
self.inputStream = inputStream
self.inputStreamIsSet = true
self.inputStream!.delegate = self
self.inputStream!.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
self.inputStream!.open()
self.outputStream!.delegate = self
self.outputStream!.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.outputStream!.open()
self.startRecording()
}
}
然后写入输出流
let output = self.outputStream!.write(audioBuffer, maxLength: audioBuffer.count)
在另一台设备上,我从流接收数据:
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
switch (eventCode) {
case Stream.Event.errorOccurred:
print("\(#file) > \(#function) > Error has occurred on input stream")
case Stream.Event.hasBytesAvailable:
print("\(#file) > \(#function) > New data has arrived")
receivingQueue.sync {
self.readFromStream()
}
}
}
此方法被调用两次,以后不再调用。但是,我可以看到流仍然被写入,因为最终这个错误会被连续打印出来:
[GCKSession] Failed to send a DTLS packet with 1198 bytes; sendmsg error: No buffer space available (55).
另外,当我转到xCode中的调试导航器时,我可以看到正在发送和接收数据。双向数据传输速率约为0.2 mbps