1

我有一个小型服务器在端口 843 上侦听,<policy-file-request/> 然后发送以下内容:

<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

在我的闪存方面,连接代码看起来像

m_socket = new Socket("127.0.0.1", 4600);
m_socket.addEventListener(ProgressEvent.SOCKET_DATA, OnSockData);

m_socket.writeUTFBytes(String.fromCharCode(255) + String.fromCharCode(0));
m_socket.flush();

我有一个单独的服务器在端口 4600 上侦听,它希望从客户端获取 char 255,但它永远不会发送。已建立端口 4600 上的连接,但从未发送数据。

端口 843 上的迷你服务器成功地从客户端获取连接并发送策略文件。

所以要么政策文件提交有问题(我不确定如何在 AS3 中检查)。或者选项 2 是由于某种原因,数据在初始连接过程中丢失。

PS 如果我不在端口 843 上运行迷你服务器,端口 4600 上的服务器将收到策略文件请求(根据 AS3 协议)。

我将不胜感激有关此处检查内容的任何提示。我不确定出了什么问题。我一直在通过闪存调试器做所有事情,直到现在才需要策略文件请求的东西。

4

1 回答 1

2

您可能需要带有文档类型的完整 XML。此外,您可能还需要实际限制端口。试试这个:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy><allow-access-from domain="*" to-ports="4600" /></cross-domain-policy>

编辑:尝试m_socket.addEventListener(Event.CONNECT, connectHandler);然后创建connectHandler发送数据的函数。

于 2012-09-04T05:01:36.400 回答