2013-07-25 36 views
-1

我剛剛在Flash中啓動了一個項目,但無法啓動XMLSocket。Flash無法設置XMLSocket

我的代碼:

import Network.CommunicationBootstrap; 

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

包裝網班組長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類型= 「ioError在」 氣泡=假可取消=虛假的EventPhase = 2文本=「Error#2031:Socket Error。URL:127.0.0.1」] securityErrorHandler:[SecurityErrorEvent type =「securityError」bubbles = false cancelable = false eventPhase = 2 text =「錯誤#2048:安全沙箱衝突:file:/ // C |/US ERS/iufrs /文檔/ AS3/1/Torn.swf不能從127.0.0.1:30000加載數據。「]

(由跡線變得與2個事件)

+0

您是否設置了crossdomain.xml? – user1875642

回答

1

這是(作爲消息提示)由於沙盒您的SWF在運行

the docs

本地文件

描述了通過使用文件引用的任何文件。 協議

這就是你在這裏做的。

另外:

只能與本地文件系統沙箱 - 出於安全性考慮,Flash Player將 將所有本地SWF文件和資產與本地文件系統 沙箱中,默認情況下。在此沙箱中,SWF文件可以讀取本地文件 (例如,通過使用URLLoader類),但它們不能以任何方式與網絡通信。這保證了用戶是 本地數據不會泄漏到網絡或以其他方式 不適當地共享

這是什麼原因造成你看到的錯誤。

如果您希望您的swf由網絡服務器託管,那麼您應該確保swf可以從運行在127.0.0.1上的網絡服務器加載,並且您應該通過http加載它,例如, as http://127.0.0.1/YourSwf.swf

如果你想從文件系統中運行你的sef,你需要編譯它以在'local-with-networking'沙箱中運行,鏈接解釋瞭如何。