【问题标题】:XMLSocket exceptionsXMLSocket 异常
【发布时间】:2011-05-09 09:34:05
【问题描述】:

我正在尝试将一些数据从 flex 脚本中的 XMLSocket 发送到本地主机上的 TCP 服务器套接字,端口 12345 :

        import flash.net.XMLSocket;
        import flash.system.System;
        private var socket:XMLSocket;
        private function xmlConnectHandler( event:Event ):void {
             txtInfo.text += "xmlConnectHandler";
            socket.send( "<test>Connection from flex<test/>" );  
        }
        private function XmlConnect():void
        {
            socket = new flash.net.XMLSocket();
            socket.addEventListener(Event.CONNECT, xmlConnectHandler);
            socket.connect(null, 12345);

        }
]]>
</fx:Script>

<mx:VBox>
<s:Label id="lblStatus"/>
<mx:Button label="Test" click="XmlConnect()" />
<mx:TextInput id="txtInfo" />
</mx:VBox>        

我有

错误 #2044:未处理的 ioError:。文本=错误 #2031:套接字错误。在 Main/___Main_Button1_click() 处的 Main/XmlConnect()

错误 #2044:未处理的安全错误:。文本=错误 #2048:安全性 沙盒违规:file:///C:/flex/src/Main.swf 无法从 :12345。在 Main/XmlConnect() 在 Main/___Main_Button1_click()

这是一个安全问题吗?这很令人困惑:我以为我正在尝试在使用“socket.connect(null,12345)”的本地主机连接的情况下连接到“本地域”,我仍然需要一个策略文件吗? 谢谢, -V

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    你应该阅读XMLSocket Policy Files

    【讨论】:

    • 我尝试添加 Security.loadPolicyFile("file:///C:\policy.xml") 其中“policy.xml”允许所有访问:a href="http://www.adobe.com/xml/dtds/cross-domain-policy.dtd" rel="nofollow" target="_blank">adobe.com/xml/dtds/cross-domain-policy.dtd> 好像没什么区别
    • 我认为你不能指向这样的本地文件。必须以某种方式“提供”它(通常通过 xmlsocket 服务器,在端口 843 上),否则它一上线就没有用了。
    • 安全文件应该如何被“提供”?我试图将它从我的 XML 服务器套接字发送到同一个套接字连接 - 没有进展。
    • 有什么地方可以解释这个问题的正常解决方案,而不是提供一堆无用的文档。
    • 有些是通过 xmlsocket 进行的,有些是通过 Web 服务器进行的。无论哪种方式,它都需要在线提供。我相信还有一个域问题(需要与您的 swf 文件在同一个域下)。这些几乎都是 Flash 的标准安全功能。此外,您可能希望在策略文件中使用通配符 (*),而不是将其留空。
    猜你喜欢
    • 2010-11-24
    • 2014-01-07
    • 1970-01-01
    • 2013-07-25
    • 2011-05-11
    • 2011-07-14
    • 2012-06-10
    • 2011-05-25
    • 2011-04-01
    相关资源
    最近更新 更多