Flash 客户端 XMLSocket 未连接到服务器

Posted

技术标签:

【中文标题】Flash 客户端 XMLSocket 未连接到服务器【英文标题】:Flash client XMLSocket not connecting to server 【发布时间】:2010-11-15 07:11:59 【问题描述】:

我有一个想要连接到服务器的 Flash 客户端。两者都使用 localhost 和端口 50000 所以不应该有任何跨域问题。我还在发布设置中设置了仅访问网络。当我调用 XMLSocket 连接时,服务器似乎获得了一个新连接。但是,XMLSocket.onConnect 回调不会调用 success=true。

对可能出现的问题有什么想法吗?

这是用于创建套接字的 ActionScript。

 function myOnConnect(success) 
    if (success) 
        trace ("Connection succeeded!")
        inputText.text = "open";
//      socket.send("1\n");
        gotoAndPlay(2);
     else 
        trace ("Connection failed!")
        inputText.text = "failed";
    



btnConnect.onRelease = function()

    inputText.text = "started";


    result = socket.connect("localhost", 50000);




socket = new XMLSocket();
socket.onConnect = myOnConnect;

【问题讨论】:

看起来不错,但我对“localhost”持怀疑态度。尝试使用 null(根据 ActionScript Docs 的“同一台机器”连接),看看是否可行。 我在 Flash 调试器中运行它并立即连接。我想知道是否需要安全设置才能使其在浏览器中运行。它在 IE 或 Firefox 中不起作用。 只是为了好玩,我还尝试将发布设置切换为仅访问本地文件。没用。 对同一台机器使用 null 不起作用。不过谢谢你的想法。 没关系。如果您可以通过 Flash 调试器进行连接,则连接应该不是问题,但安全性可能仍然存在。 【参考方案1】:

这最终成为了一个安全问题。使用 XMLSocket 时,Flash Player 增加了安全性。 Flash Player 现在在端口 843 上查找策略文件。另一种方法是让 swf 使用调用 Security.loadPolicyFile() 查找策略文件。如果文件存在并且所有安全设置都允许 XMLSocket,则创建连接。

查看Adobe article on Policy files 和更多信息here。这是另一篇好文章about policy files。

这是最终对我有用的策略文件。它根本没有限制。但是,我认为我可以让事情正常进行,然后让它们变得正确。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">

<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy> 

   <!-- This is a master socket policy file -->
   <!-- No other socket policies on the host will be permitted -->
<!--   <site-control permitted-cross-domain-policies="all"/> -->

   <!-- Instead of setting to-ports="*", administrator's can use ranges and commas -->
   <!-- This will allow access to ports 123, 456, 457 and 458 -->
   <allow-access-from domain="*" to-ports="*" secure="false"/>

</cross-domain-policy>

【讨论】:

以上是关于Flash 客户端 XMLSocket 未连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AS3.0 XMLSocket 连接到服务器

XMLSocket 在 Firefox 中工作,但不在 IE 中

如何在 Flash、XMLSocket 中拆分数据包

Netty Flash XmlSocket 消息接收错误

XMLSocket 可以接收数据但不能发送

Android 中的 ActionScript 套接字