2010-12-02 74 views
1

我正在使用Adobe Stratus(现在更名为Cirrus)来构建一个p2p应用程序。在应用程序内部,我使用了NetStream.onPeerConnect回调函数,并且期望每次连接对等点时都会触发它。然而,它与我的朋友A总是失败,而奇怪的朋友B设法让这个功能没有任何问题。是什么阻止NetStream.onPeerConnect被触发?

我想知道这个问题可能是什么原因?

下面是代码段的样子。

首先,创建一个NetConnection

netConnection = new NetConnection(); 
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler); 
netConnection.connect(SERVER_ADDRESS+DEVELOPER_KEY); 

其次,在创建的NetConnection NetStream的成功连接。

private function netConnectionHandler(event:NetStatusEvent):void{ 

    switch (event.info.code){ 
     case "NetConnection.Connect.Success": 

      sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); 
      sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); 

      var sendObj:Object = new Object(); 
      sendObj.onPeerConnect = function(subscriber:NetStream) : Boolean { 

       trace("[onPeerConnect] far id: " + subscriber.farID); 
       return true; 
      } 
      sendStream.client = sendObj; 
      sendStream.publish("file"); 
      ...... 

第三,这里是我如何建立两个对等

receivedStream = new NetStream(netConnection, farId); 
    receivedStream.client = this; 
    receivedStream.addEventListener(NetStatusEvent.NET_STATUS, incomingStreamHandler); 
    receivedStream.play("file"); 

请帮赐教之间的连接。谢谢!

回答

1

事实证明,我的朋友A在对称NAT后面。我正在考虑为我们建立一个TURN服务器来建立一个成功的连接。

相关问题