使用Multipeer Connectivity(Swift 2)

问题描述:

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

 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() 

我的输入流的代码是:

  var bytesRead = 0 
    var buffer = [UInt8](count: 15000000, repeatedValue: 0) 
    NSLog("%@", "didReceiveStream") 
    stream.delegate = self 
    stream.scheduleInRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode) 
    stream.open() 
    while (stream.hasBytesAvailable){ 
     bytesRead = stream.read(&buffer, maxLength: buffer.count) 
     print("data fetched"+"\(bytesRead)") 
    } 

     stream.close() 

关于这部分的接收数据和代码的后续变化的原因,制定将解决任何帮助非常感谢。

为NSOutputStream文档表示 写(返回代码_:最大长度:)应与检查:

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

返回值: 字节数实际写入,或-1如果发生错误。有关错误的更多信息可以通过streamError获得。如果接收方是固定长度的流并且已达到其容量,则返回0。

我建议你检查这个返回码,并且一次一个地获取数据。