Flash无法设置XMLSocket

时间:2013-07-25 18:23:26

标签: actionscript-3 flash sockets xmlsocket

我刚刚在flash中启动了一个项目,但它无法启动XMLSocket。

我的代码:

import Network.CommunicationBootstrap;

var network:CommunicationBootstrap = new CommunicationBootstrap();
network.start("127.0.0.1", 30000);

Package Network类CommunicationBootstrap:

package Network {
import flash.net.XMLSocket;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;

public class CommunicationBootstrap {

    private var socket:XMLSocket = new XMLSocket();

    public function CommunicationBootstrap() {
        socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    }

    public function start(ip:String, port:int):void {
        this.socket.connect(ip, port);

        trace("Testing this out!");
    }

    private function ioErrorHandler(event:IOErrorEvent):void {
        trace("ioErrorHandler: " + event);
    }

    private function securityErrorHandler(event:SecurityErrorEvent):void {
        trace("securityErrorHandler: " + event);
    }

}

}

我的错误是什么: ioErrorHandler:[IOErrorEvent type =“ioError”bubbles = false cancelable = false eventPhase = 2 text =“错误#2031:套接字错误.URL:127.0.0.1”] securityErrorHandler:[SecurityErrorEvent type =“securityError”bubbles = false cancelable = false eventPhase = 2 text =“错误#2048:安全沙箱违规:file:/// C | /Users/iufrs/Documents/AS3/1/Torn.swf无法从127.0.0.1:30000加载数据。“]

(通过追踪和2个事件获得)

1 个答案:

答案 0 :(得分:1)

由于你的swf正在运行的沙箱,这是(作为消息提示)。

来自the docs

  

本地文件描述使用该文件引用的任何文件:   协议

你在这做什么。

此外:

  

local-with-filesystem沙箱 - 出于安全考虑,请使用Flash Player   将所有本地SWF文件和资产放在local-with-file-system中   沙盒,默认情况下。在此沙箱中,SWF文件可以读取本地文件   (例如,通过使用URLLoader类),但它们不能   以任何方式与网络通信。这向用户保证   本地数据不能泄露给网络或其他方式   不恰当地分享

这是导致您看到错误的原因。

如果您希望您的swf由网络服务器托管,那么您应该确保可以从127.0.0.1上运行的网络服务器加载swf,并且您应该通过http加载它,例如作为http://127.0.0.1/YourSwf.swf

如果你想从文件系统运行你的sef,你需要编译它以在“local-with-networking”沙箱中运行,该链接解释了如何。