打开swf文件,而不是使用socket

时间:2011-10-03 11:17:02

标签: actionscript-3 cross-domain flash-cs5 flash

抱歉我的英语不好。

我有以下问题:

我有一个.fla文件,适用于Socket类。有一个服务器(用Delphi XE编写,但没关系)。我从.fla连接到它。 当我从Flash Professional CS5中执行我的.fla时,一切正常。但是当我试图从资源管理器(Win 7,Flash Player 10)执行生成的.swf时,我收到了一个错误:

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.当此套接字收到消息policy-file-request时,它会向.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中打开,没有错误,但套接字连接没有发生。 我尝试了不同的跨域文件,但我所有的尝试都让我得到了相同的结果。

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

2 个答案:

答案 0 :(得分:1)

user976479这是完全正常的行为 Flash播放器将首先尝试在端口843上获取主xml策略文件,然后如果找不到主设备则尝试5243。 一旦服务器响应交叉域闪存播放器的请求,将关闭连接(始终) 我为我的套接字服务器使用以下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的端口,因为较低的端口通常为其他应用程序保留,可能与之相冲突。

答案 1 :(得分:0)

您的跨域文件没有问题。

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

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

编辑:由于您已经在运行本地服务器,请尝试上传到该服务器。然后访问您的swf http://127.0.0.1/mySwf.swf