2

在我的应用程序中,我做的事情与WiTap项目中所做的事情非常相似。我使用 Bonjour 来发现对等点,然后通过套接字发送数据以执行初始握手。

我可以看到使用 Cocoa Packet Analyzer OTA 发送的数据。但是该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; 

任何有关进一步调试方法的答案甚至建议都将不胜感激。

谢谢!

4

0 回答 0