我在这里找到了很多类似的帖子,但似乎都没有解决我遇到的确切问题。
我只是想将一个 XMLSocket 连接到我的服务器,在我尝试连接大约 10 秒后,我收到一个 SecurityErrorEvent:错误 #2048:安全沙箱违规(无法从 ##.##.##.## 加载数据: 9024)。
在服务器端,我有一个侦听端口 9024 的 php 脚本。我很确定它工作正常,因为我可以使用其他 php 脚本连接到它。此外,当我的客户端 php 发出策略文件请求时,我的服务器脚本会返回该策略。这是as3:
private var sock:XMLSocket = new XMLSocket();
// in my connection method
Security.allowDomain("domain.com");
Security.loadPolicyFile("dubDomain.domain.com/crossdomain.xml");
Security.loadPolicyFile("xmlsocket://domain.com:9024");
sock.connect("11.11.11.11", 9024);
在调用 sock.connect 之前,我在 as3 中将侦听器设置为套接字,但我认为任何错误都会在它们被触发之前发生。
我的理解是,在第二个 Security.loadPolicyFile 或 socket.connect 应该尝试连接到套接字 9024 的服务器并请求策略文件。我相信 sock.connect 只会在无法从端口 843 获得响应后发送请求。
但是,在服务器端,它显示没有尝试连接。我已经从 IDE(FlashDevelop)和上传到服务器时从 swf 尝试过这个。
我会在端口 843 上尝试它,但我在我的服务器上没有管理员权限。如果重要的话,这里有一些 php 脚本:
$client = socket_accept($sock);
if (socket_getpeername($client, $address, $theirport))
{
echo "Client $address: $theirport is now connected to us\n";
}
$input = socket_read($client, 1024000);
echo "[client] $input";
$sock 似乎设置得很好,因为我可以使用另一个 php 脚本进行连接,但是当我尝试连接 as3 时它只会永远等待。
有什么建议么?我是不是误会了什么?提前致谢。