由浏览器托管的SWF的Flash Socket连接

问题描述 投票:1回答:2

我试图使用Flash ActionScript中的TCP Socket。我使用的是标准示例provided by Adobe。这是代码:

// Load policy file from remote server.
Security.loadPolicyFile("http://" + serverURL + "/crossdomain.xml");
// Attempt to connect to remote socket server.
try {
    msg("Trying to connect to " + serverURL + ":" + portNumber + "\n");
    socket.connect(serverURL, portNumber);
} catch (error:Error) {
    /*
        Unable to connect to remote server, display error 
        message and close connection.
    */
    msg(error.message + "\n");
    socket.close();
}

我的crossdomain.xml文件位于端口80:

<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>

当我加载应用程序时,我在检查器中看到它成功访问了策略文件。然而Event.CONNECT从未被称为。我尝试在各个域上打开各种不同的端口,包括相同的域,没有运气。尝试了不同的策略文件。

我错过了什么?

actionscript-3 flash sockets actionscript
2个回答
2
投票

如果allowscriptaccess为false,您将无法绕过它,因此您缺少的是adobe policy server。

http://vvowproject.googlecode.com/svn-history/r41/trunk/server/flashpolicyd.py

在服务器打开端口843上,然后使用此命令

sudo ./flashpolicyd.py --file=crossdomain.xml --port=843

这是crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="SOAPAction"/>
</cross-domain-policy>

这肯定会有用,我自己尝试用你的例子。


1
投票

这就是我所知道的使用TCP / IP套接字和XML。我已成功建立了一个带有Flash客户端的Ruby服务器,但想了解更多有关聊天服务器的信息。我希望其中一些有用。

你需要一个带有Flash AS3的守护进程。这是文档。 http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000318.html

alt text http://www.ashcraftband.com/myspace/videodnd/daemonLil.jpg

要创建套接字连接,必须创建服务器端应用程序以等待套接字连接请求并将响应发送到SWF文件。这种类型的服务器端应用程序可以用Java,Python或Perl等编程语言编写。要使用XMLSocket类,服务器计算机必须运行一个守护程序,该守护程序了解XMLSocket类使用的协议。该协议在以下列表中描述:

•XML消息通过全双工TCP / IP流套接字连接发送。 •每条XML消息都是一个完整的XML文档,以零(0)字节结束。 •可以通过单个XMLSocket连接发送和接收无限数量的XML消息。

了解Flash Player 10中的安全性更改 http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_02.html


XML安全政策

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="SOAPAction"/>
</cross-domain-policy>

FLASH客户端 请记住将“发布设置”设置为“仅限访问网络”。

服务器 为安全策略打开一个单独的端口,并使其在后台运行。

© www.soinside.com 2019 - 2024. All rights reserved.