I have been searching how to start receiving data after stream has been started for a while but there must be something which is missed. In following function I am having stream name from other peer but unable to start receiving stream data.
func stream(_ aStream: Stream, handle eventCode: Stream.Event) function is never called.
Besides, outputStream!.streamStatus.rawValue returns 2 at the sender side after stream name has been received at receiver side when we try to send stream data.
rawValue == 2 means; The remote end of the connection can’t be contacted, or the connection has been severed for some other reason.
But we are receiving stream name nevertheless.
func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {
print("received stream = \(streamName)")
stream.delegate = self as? StreamDelegate
stream.schedule(in: RunLoop.main, forMode: RunLoop.Mode.default)
stream.open()
}
func stream(_ aStream: Stream, handle eventCode: Stream.Event){
// Code to handle stream data.
}
Application delegate list was like this
class ViewController: UIViewController,
MCSessionDelegate,
MCNearbyServiceAdvertiserDelegate,
MCNearbyServiceBrowserDelegate,
{
"StreamDelegate" should have been added
class ViewController: UIViewController,
MCSessionDelegate,
MCNearbyServiceAdvertiserDelegate,
MCNearbyServiceBrowserDelegate,
StreamDelegate{
After that
func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {}
started to get streams.