1

我正在尝试使用 Flash ActionScript 中的 TCP 套接字。我正在使用Adob​​e 提供的标准示例。这是代码:

// 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永远不会被调用。我试过在不同的域上打开各种不同的端口,包括同一个域,但没有运气。尝试了不同的策略文件。

我错过了什么?

4

2 回答 2

2

If the allowscriptaccess is false you won't be able to bypass that so what you are missing is the adobe policy server.

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

On the server open port 843 then use this command

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

here is the 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>

This will definitely work, i tried it myself with your example.

于 2013-10-18T13:54:02.613 回答
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

替代文字 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 CLIENT
请记住将发布设置设置为仅访问网络。

SERVER
为安全策略打开一个单独的端口,并让它在后台运行。

于 2013-10-18T10:18:34.960 回答