我在AS3中的XMLSocket脚本遇到了麻烦。我有一个Java服务器,我正在尝试发送XML数据,但是服务器没有收到任何内容。最令人惊讶的是,一个月前我的脚本运作良好,现在我的ioError侦听器返回了我:

“错误#2031:套接字错误。url:client_fla :: baster_fla ::维护emainimeline/frame1()”的test()at test()

和我的SecurityError听众:

“错误#2048:安全沙盒违规:file:/// c | /documents%20and%20settings/zeph/bureau/client.swf无法从127.0.0.0.1:18000。 frame1()”

我试图更改IP,尝试在另一台计算机上,尝试拉出我的脚本的以前版本,该脚本没有变化,没有结果。

我只是不明白为什么它停止这样做。这是我的脚本:

package
{

    import flash.net.XMLSocket;
    import flash.events.*;
    import flash.display.MovieClip;

    public class test extends MovieClip 
    {

        public function test()
        {
            trace("pouet");
            var xmlsock:XMLSocket = new XMLSocket(); 
            xmlsock.connect("127.0.0.1", 18000);
            var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>'); 
            xmlsock.send(xmlFormattedData);
            xmlsock.addEventListener(DataEvent.DATA, onData);
            xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
            xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
            xmlsock.send(xmlFormattedData);

        }

        private function onData(event:DataEvent):void 
        { 
            trace("[" + event.type + "] " + event.data); 
        }


        private function ioerror(event:IOErrorEvent):void 
        { 
        trace(event);
        }

        private function secuerror(event:SecurityErrorEvent):void 
        { 
        trace(event);
        }

    }

}

我对此感到生气,有人有想法吗?

谢谢阅读!

有帮助吗?

解决方案

错误表明,您正在从本地文件系统运行Flash应用程序,并且此应用程序希望提出网络请求(对Java服务器)。

默认情况下不允许这样做。您可以做两件事之一:

  • 在Flash Player中更新您的全局安全设置(右键单击,高级设置,全局安全设置,然后设置Flash文件或允许进行网络请求的整个文件夹)

  • 从Web服务器运行Flash应用程序(并确保在Java服务器上有CrossDomain.xml)。

其他提示

正如您的错误所指示的那样,您正在遇到违反沙箱安全性。这意味着Flash不允许使用其自身以外的应用程序域的资产。基本上有两个修复程序,一个比另一个更简单:

  1. 阅读如何创建和加载 跨域XML. 。这只是您正在运行的Flash应用程序读取的服务器上的“策略”。正确设置可能很棘手,但这是普遍接受的路线。

  2. 在输出设置上,在“本地播放安全性”下,您可以检查“访问网络文件”,而不是“仅访问本地文件”,然后快速解决问题。

希望有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top