Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-InputStream:没有可用的缓冲区空间(55)_Ios_Swift_Streaming_Inputstream_Outputstream - Fatal编程技术网

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