2011-10-03 76 views
1

对不起,我的英语不好。打开的SWF文件比套接字

我有以下问题:

我有一个FLA文件,与Socket类的作品。有一台服务器(用Delphi XE编写,但没关系)。我从.fla连接到它。 当我在Flash Professional CS5中执行.fla时,一切正常。但是,当我试图从资源管理器中执行导致瑞士法郎(Win 7的时,Flash Player 10)我得到了一个错误:

SecurityError: Error #2010: Local-with-filesystem SWF files are not 
permitted to use sockets. at flash.net::Socket/internalConnect() at 
flash.net::Socket/connect() at payterminal::TLogger() at 
payterminal::TMainTerminalClass() at 
testterminal_fla::MainTimeline/frame1() 

插座连接到服务器,如下所示:

Sock.connect(“127.0 .0.1',5243);

我试图改变设置在“本地回放安全性”,“文件 - >发布设置”为“只访问网络

好的Flash播放器启动时没有错误,但它向​​服务器发送以下信息。:

<policy-file-request/> 

后此套接字连接关闭。

我还试图用该方法的Security.allowDomain(),但它并没有取得任何积极成果。

我尝试过另一种方法。该服务器有两个侦听套接字。在端口843当此插口收到邮件策略的文件请求第一次听它发送到.swf文件跨域文件,像这样:

<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM 
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- Policy 
file for xmlsocket://socks.mysite.com --> <cross-domain-policy> 
    <allow-access-from domain="*"/> 
</cross-domain-policy> 

它之后的插座(843)关闭。 但第二个侦听套接字获得相同的信息:。

毕竟,我的.swf在Flash Player中仍然是打开的,没有错误,但套接字连接没有发生。 我尝试了不同的crossdomain-files,但是我所有的尝试都让我得到了相同的结果。

这就是我的问题。我期待着你的帮助。谢谢。

回答

1

user976479这是完全正常的行为。
Flash Player将首先尝试获取端口843上的主xml策略文件,如果未找到主设备,则尝试5243。
一旦服务器响应跨域Flash Player的请求,将关闭连接(始终)。
我使用以下crossdomain.xml作为套接字服务器。
记得有一次在域策略收到你必须有flash播放器重新连接第二次。第二次你不会被断开。

<?xml version="1.0" encoding="UTF-8" ?> 
    <cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy> 

最后一件事。 使用高于10k的端口,因为较低的端口通常保留给其他应用程序,并可能与此冲突。

+0

作为一个侧面说明,让我补充一点,当服务器发送请求“<策略的文件请求/>”这是要求的crossdomain在那个时候,你需要用crossdomain策略做出回应,正如我用我发布的xml所陈述的那样。之后,客户端套接字将断开连接并且客户端将不得不重新连接到服务器。只有在那个时候你才能通过套接字发送请求。我建议阅读主策略文件是什么。我个人保留crossdomain.xml在我使用的每个端口上。 –

0

跨域文件没有问题。

Flash播放器的安全功能不允许本地(file://协议)文件访问互联网。要在浏览器中测试您的swf,您必须将其上传到服务器,然后对其进行测试。

或者,您可以下载服务器以安装在本地计算机上进行测试。 我使用wampserver

编辑:由于您已经运行本地服务器,请尝试上传到那。然后访问您的瑞士​​法郎作为http://127.0.0.1/mySwf.swf

+0

Flash播放器的安全功能不允许本地(文件:\\域)。文件访问互联网????????真?在发布之前阅读您所输入的内容。 –

+0

默认情况下,Flash会将所有本地运行的SWF放入本地文件系统Sandbox中,这将阻止该SWF进行任何网络调用。但是,您可以在编译时选择不同的沙箱。安全指南:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html – meddlingwithfire

+0

@The_asMan你可能会修正文件:不是完全的张贴//协议,:\\域到文件不必要的评论.. –