我刚刚在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个事件获得)
答案 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”沙箱中运行,该链接解释了如何。