Как начать получать потоковые данные после запуска потокового сеанса с помощью Swift 4

Я некоторое время искал, как начать получать данные после запуска потока, но должно быть что-то, что пропущено. В следующей функции у меня есть имя потока от другого узла, но я не могу начать получать данные потока.

Функция func stream(_ aStream: Stream, handle eventCode: Stream.Event) никогда не вызывается.

Кроме того, outputStream!.streamStatus.rawValue возвращает 2 на стороне отправителя после того, как имя потока было получено на стороне получателя, когда мы пытаемся отправить данные потока.

rawValue == 2 означает; Не удается связаться с удаленным концом соединения, или соединение было разорвано по какой-либо другой причине.

Но мы все равно получаем имя потока.

 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.

}

person Hope    schedule 06.11.2018    source источник


Ответы (1)


Список делегатов приложения был таким

class ViewController:   UIViewController,
                    MCSessionDelegate,
                    MCNearbyServiceAdvertiserDelegate,
                    MCNearbyServiceBrowserDelegate,
                   {

"StreamDelegate" должен был быть добавлен

class ViewController:   UIViewController,
                    MCSessionDelegate,
                    MCNearbyServiceAdvertiserDelegate,
                    MCNearbyServiceBrowserDelegate,
                    StreamDelegate{

После того

 func session(_ session: MCSession, didReceive stream: InputStream,      withName streamName: String, fromPeer peerID: MCPeerID) {}

начали получать потоки.

person Hope    schedule 06.11.2018