从本地环境中的闪存套接字连接到TCP服务器

时间:2013-03-11 02:20:26

标签: actionscript-3 node.js cross-domain cross-domain-policy

我已经为客户在他们的计算机上创建了一个用于分发版本的swf文件。
我有一个从该swf文件连接的TCP服务器。
在测试之前,我在adobe网站上阅读了一些与政策文件相关的文章

我试图对此进行测试,并将nodejs和swf文件用于该

但我失败了。这是它的样子。

root上的crossdomain.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="3000" />
</cross-domain-policy>

tcp_server.js

var sys = require("sys"),
net = require("net");

var server = net.createServer(function(stream) {
stream.addListener("connect", function() {
    sys.puts("Client connected");
    stream.write("hello\r\n");
});

stream.addListener("data", function(data) {
    sys.puts("Received from client: " + data);
    stream.write(data);
});

stream.addListener("end", function() {
    sys.puts("Client disconnected");
    stream.write("goodbye\r\n");
    stream.end();
});
});

server.listen(3000, "localhost");
本地

上的

swf文件

import flash.net.Socket;

var socket:Socket = new Socket();
trace(socket);
trace("a socket is created");

socket.connect("localhost", 3000);

这似乎是一个很长的代码,无论如何

我测试了它,并得到了这个错误

错误的代码,xmlsocket:// localhost:843的策略文件将被忽略


我找不到我的代码有什么问题,
如果您知道,请告诉我 感谢谁读了这个问题

度过愉快的一天。

1 个答案:

答案 0 :(得分:1)

Flash Player会检查策略文件服务器(默认情况下为端口843),或者在必要时,检查您正在打开的套接字(对于您,端口3000)。

策略文件服务器是一个响应具有有效策略文件的套接字的套接字。您的消息发生的情况很可能是它正在发送请求并获取除策略文件之外的其他内容,因此来自端口3000的语法无效。 编程套接字,当它收到<policy-file-request/>消息时,通过套接字返回你的crossdomain.xml文件。

更多http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html