1

我在使用 AS3 中的 XMLSocket 脚本时遇到问题。我有一个 java 服务器,我正在尝试发送 XML 数据,但服务器没有收到任何内容。最令人惊讶的是,一个月前我的脚本运行良好,现在我的 IOError 监听器返回给我:

“错误 #2031:套接字错误。URL:127.0.0.1 at test() at Client_fla::MainTimeline/frame1()”

和我的 SecurityError 监听器:

“错误 #2048:违反安全沙箱:file:///C|/Documents%20and%20Settings/Zeph/Bureau/Client.swf 无法从 127.0.0.1:18000 加载数据。在 Client_fla::MainTimeline/ 的 test() 中框架1()"

我试图更改 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);
        }

    }

}

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

谢谢阅读!

4

2 回答 2

0

正如您的错误所表明的那样,您遇到了沙盒安全违规行为。这意味着 Flash 不允许来自其自身以外的应用程序域的资源。基本上有两个修复,一个比另一个简单得多:

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

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

希望有帮助!

于 2011-03-14T20:24:14.913 回答
0

该错误表明,您正在从本地文件系统运行 Flash 应用程序,并且该应用程序想要发出网络请求(向您的 java 服务器)。

默认情况下不允许这样做。您可以执行以下两项操作之一:

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

  • 从 web 服务器运行您的 flash 应用程序(并确保在 java 服务器上存在 crossdomain.xml)。

于 2011-03-15T17:39:29.093 回答