Ios 目标iPhone使用多电话连接(Swift 2)部分接收来自发送方的音频文件

Ios 目标iPhone使用多电话连接(Swift 2)部分接收来自发送方的音频文件,ios,audio-streaming,multipeer-connectivity,nsinputstream,nsoutputstream,Ios,Audio Streaming,Multipeer Connectivity,Nsinputstream,Nsoutputstream,我已经从发送方iPhone打开了一个输出流,并在接收iPhone中实现了一个输入(接收)流。我可以使用Multipeer连接通过同一Wi-Fi网络连接两台设备并发送数据(我将音频文件转换为NSData格式,通过Outputstream发送)。但在接收时,只接收我发送的NSData的一部分。每次我重复运行代码时,接收到的数据量都会有所不同。 以下是输出流代码: let outputStream: NSOutputStream = try! session.startStreamWithN

我已经从发送方iPhone打开了一个输出流,并在接收iPhone中实现了一个输入(接收)流。我可以使用Multipeer连接通过同一Wi-Fi网络连接两台设备并发送数据(我将音频文件转换为NSData格式,通过Outputstream发送)。但在接收时,只接收我发送的NSData的一部分。每次我重复运行代码时,接收到的数据量都会有所不同。 以下是输出流代码:

     let outputStream: NSOutputStream = try! session.startStreamWithName(name, toPeer: session.connectedPeers[0])
            print("stream created")
            outputStream.delegate = self
            outputStream.scheduleInRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)
            outputStream.open()
            print("Before filewritten")
            outputStream.write(UnsafePointer<UInt8>(data.bytes), maxLength: data.length)
            print("filewritten")
            outputStream.close()

非常感谢您提供有关部分接收数据的原因以及随后代码更改以制定解决方案的任何帮助。

NSOutputStream的文档表明 应使用以下选项检查写操作(ux:maxLength:):

let result = outputStream.write(UnsafePointer<UInt8>(data.bytes), maxLength: data.length)
let result=outputStream.write(UnsafePointer(data.bytes),maxLength:data.length)
返回值: 实际写入的字节数,如果发生错误,则为-1。有关错误的更多信息,请使用streamError。如果接收器是固定长度的流并且已达到其容量,则返回0

我建议您检查此返回代码,并按片段获取数据

let result = outputStream.write(UnsafePointer<UInt8>(data.bytes), maxLength: data.length)