送信側の iPhone から出力ストリームを開き、受信側の iPhone に入力 (受信) ストリームも実装しました。Multipeer Connectivity を使用して同じ Wi-Fi ネットワークを介して両方のデバイスを接続し、データを送信できます (オーディオ ファイルを NSData 形式に変換して、Outputstream 経由で送信します)。コードを繰り返し実行するたびに、さまざまな量のデータが受信されます。出力ストリーム コードは次のとおりです。
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()
このデータの部分的な受信の原因と、解決策を策定するためのコードのその後の変更に関するヘルプは、非常に高く評価されます。