2

我有两个瑞士法郎:

  1. 申请瑞士法郎
  2. p2p 客户端 swf,允许使用 rtmfp 复制技术(通过 cirrus 服务)加载数据

主要思想是在特定域上拥有一个 p2p 加载器,该加载器能够在 p2p 网络中工作,而无需多次请求每个域的权限,例如:

p2p客户端通过请求加载二进制数据,我相信内容真的无关紧要。

所以,我使用以下类(app.swf)加载 p2pclient swf

public class ClientLoader {

    // .. some code

    public function load(cb:Function, err:Function):void
    {
        _cb = cb;
        _err = err;

        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoaded);
        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _onIoError);
        loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _onSecurityError);
        // note that context has neither application domain nor security domain
        loader.load(new URLRequest(_url), new LoaderContext());
    }

    private function _onLoaded(e:Event):void
    {
        trace("Loaded. Connecting to the p2p network...");

        _client = e.target.content;
        _client.addEventListener(Event.CONNECT, _onClientReady);
        _client.connect();
    }

    private function _onClientReady(e:Event):void
    {
        _cb(_client);
    }

}
}

p2pclient 本身(p2pcli.swf):

public class P2P extends Sprite
{
    public function SqP2P() {
        Security.allowDomain("*");
    }

    public function connect():void
    {
        _connection = new NetConnection();
        _connection.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
        _connection.connect(CIRRUS_ADDRESS, CIRRUS_KEY);

        // after successful connect this method called
        _loadGroup();
    }

    private method _loadGroup():void
    {
        var spec:GroupSpecifier = new GroupSpecifier(_name);
        spec.serverChannelEnabled = true;
        spec.objectReplicationEnabled = true;

        _group = new NetGroup(connection, spec.groupspecWithAuthorizations());
        _group.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
    }

    private function _netStatus(event:NetStatusEvent):void
    {
        trace("NetStatusEvent:", event.info.code);
    }

}

但看起来 Flash Player 忽略了安全会话,并试图保存 app.swf 所属域的弹出设置,但不保存 p2pcli.swf 域。为什么?!

p2p设置框

我有完全相同的代码,但是 p2pcli.swf 被替换为 swf,它将数据存储在本地共享对象中,并且所有 domain1-2-N.com 都可以访问它。

有任何想法吗?

我知道,我的英语很烂:(

4

1 回答 1

1

我真的不完全确定,但我会把我的答案放在那里以防万一。

基于此类安全消息的一般用途,我不完全确定您能否阻止该对话框出现。在某些情况下,我确信对等辅助网络对某些人来说可能是一个安全风险(无论如何,它正在使用他们的带宽。)打开和关闭该通知的设置是用户端的,在 Flash 设置对话框中( Windows 7 中的控制面板...),因此暗示它固有地硬连线到 Flash 平台中。

当然,由于我更像是 Adob​​e AIR 专家,所以我可能完全错了……为了您的项目,我真诚地希望我是!

而且,为了记录,你的英语几乎是完美的。为了清楚起见,我调整了一段,但除此之外,就当场。:D

于 2012-03-22T19:48:45.993 回答