Невозможно получить данные, отправленные с использованием объектов NSStream - PullRequest
2 голосов
/ 03 июня 2011

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

Я могу видеть, что данные отправляются OTA с помощью Cocoa Packet Analyzer.Но функция stream: handleEvent: никогда не вызывается на принимающей одноранговой стороне.

Я могу видеть следующее:

  • Иногда, когда узел, отправивший данные, выходит,узел получателя, кажется, получает данные.
  • Иногда я вижу ошибку NSStreamEventErrorOccurred в функции обработчика.

Мне не удается увидеть какой-либо заметный паттерн привышеописанное поведение происходит.

Вот фрагмент кода, который может быть полезен.

Объекты PacketSender и PacketReceiver являются одиночными.Я неоднократно проверял, что правильный (и единственный) экземпляр этих объектов задается в качестве делегатов при отладке:

if (![netService getInputStream:&_inStream outputStream:&_outStream]) 
    {
        [Utilities showAlert:@"Failed connecting to server"];
        return BM_ERROR_NETSERVICE_STREAM_FAIL;
    }

    if(!sharedProtocolManager.mPacketSender)
    {
        sharedProtocolManager.mPacketSender = [PacketSender sharedSender];
    }

    if(!sharedProtocolManager.mPacketReceiver)
    {
        sharedProtocolManager.mPacketReceiver = [PacketReceiver sharedReceiver];
    }

    if(!sharedProtocolManager.mPacketSender || !sharedProtocolManager.mPacketReceiver)
    {
        return BM_ERROR_FAIL;
    }

    [PacketReceiver setupInStream:_inStream];
    [PacketSender setupOutStream:_outStream];
}

Внутри пакета PacketReceiver setupInStream: у меня есть функция:

if (sharedPacketReceiver->mInStream != inStream)
    {
        [sharedPacketReceiver->mInStream release];
        sharedPacketReceiver->mInStream = [inStream retain];
    }

    sharedPacketReceiver->mInStream.delegate = sharedPacketReceiver; 

Любые ответы или даже предложения о способах отладки этого будут очень благодарны.

Спасибо!

...