適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: AIR 30.0 和更早版本, Flash Player 30.0 和更早版本, Flash Lite 4
Flex 4.6 和更早版本, Flash Pro CS6 和更早版本
隱藏篩選
flash.net 

XMLSocket  - AS3

套件flash.net
類別public class XMLSocket
繼承XMLSocket Inheritance EventDispatcher Inheritance Object

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

XMLSocket 類別會實作用戶端通訊端,讓 Flash Player 或 AIR 應用程式能與以 IP 位址或網域名稱做為識別的伺服器電腦進行通訊。對於需要較短等待時間的主從式應用程式 (例如即時線上交談系統) 來說,XMLSocket 類別很有用。 傳統以 HTTP 為基礎的線上交談解決方案都需要經常輪詢伺服器,並使用 HTTP 要求下載新的訊息。 相反地,XMLSocket 線上交談解決方案會與伺服器維持開啟的連線,讓伺服器能立即傳送收到的訊息,不需等待用戶端的要求。 若要使用 XMLSocket 類別,伺服器電腦必須執行一個常駐程式,才能了解 XMLSocket 類別所使用的通訊協定。 通訊協定說明如下:
  • XML 訊息是透過全雙工的 TCP/IP 串流 Socket 連線來傳送。
  • 每一個 XML 訊息都是完整的 XML 文件,以零 (0) 位元組作為結尾。
  • 透過單一的 XMLSocket 連線,可傳送及接收無限多個 XML 訊息。

設定伺服器與 XMLSocket 物件通訊可能會很困難。 如果應用程式不需要即時的互動性,請使用 URLLoader 類別取代 XMLSocket 類別。

若要使用 XMLSocket 類別的方法,請先使用建構函式 new XMLSocket 建立 XMLSocket 物件。

位於具有檔案系統的本機安全執行程序中的 SWF 檔不可以使用通訊端。

目標主機上的「通訊端原則檔」會指定 SWF 檔可從中建立通訊端連線的主機,以及這些連線的目標連接埠。有關通訊端原則檔的安全性需求在最新的幾個 Flash Player 版本中已經變得更加嚴謹。Adobe 建議在所有的 Flash Player 版本中使用通訊端原則檔;在某些情況下,通訊端原則檔是必要的。因此,如果您使用 XMLSocket 物件,請確定目標主機會視需要提供通訊端原則檔。

下列清單摘要說明不同 Flash Player 版本中的通訊端原則檔需求:

  • 在 Flash Player 9.0.124.0 和更新版本中,任何 XMLSocket 連線都會需要通訊端原則檔。也就是說,不論您要連線至哪個連接埠,目標主機上都需要有通訊端原則檔,即使連線至提供 SWF 檔之相同主機上的連接埠,通訊端原則檔也是必要的項目。
  • 在 Flash Player 9.0.115.0 版和舊版中,如果您要連線至低於 1024 的連接埠號,或是如果您要連線至 SWF 檔提供主機以外的主機,目標主機上就需要有通訊端原則檔。
  • 在 Flash Player 9.0.115.0 中,即使不需要通訊端原則檔,但若目標主機未提供通訊端原則檔,當使用 Flash Player 除錯版時會顯示警告。

但在 Adobe AIR 中,application 安全執行程序中的內容 (使用 AIR 應用程式所安裝的內容) 沒有這些安全性限制。

如需安全性詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性

檢視範例

相關 API 元素



公用屬性
 屬性定義自
  connected : Boolean
[唯讀] 指出此 XMLSocket 物件目前是否已連線。
XMLSocket
 Inheritedconstructor : Object
類別物件的參照或是特定物件實體的建構函數。
Object
  timeout : int
指出等待連線的毫秒數。
XMLSocket
公用方法
 方法定義自
  
XMLSocket(host:String = null, port:int = 0)
建立新的 XMLSocket 物件。
XMLSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。
EventDispatcher
  
會關閉 XMLSocket 物件所指定的連線。
XMLSocket
  
connect(host:String, port:int):void
會使用指定的 TCP 連接埠,連線到指定的網際網路主機。
XMLSocket
 Inherited
會將事件傳送到事件流程。
EventDispatcher
 Inherited
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。
EventDispatcher
 Inherited
指出物件是否有已定義的指定屬性。
Object
 Inherited
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。
Object
 Inherited
指出指定的屬性是否存在,以及是否可列舉。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
會從 EventDispatcher 物件移除偵聽程式。
EventDispatcher
  
send(object:*):void
將 object 參數中所指定的 XML 物件或資料轉換成字串,並在後面加上零 (0) 位元組後傳輸到伺服器。
XMLSocket
 Inherited
為迴圈作業設定動態屬性的可用性。
Object
 Inherited
傳回代表此物件的字串,根據地區特定慣例進行格式化。
Object
 Inherited
會傳回指定之物件的字串形式。
Object
 Inherited
會傳回指定之物件的基本值。
Object
 Inherited
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。
EventDispatcher
事件
 事件 摘要 定義自
 Inherited[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。EventDispatcher
  會在伺服器關閉通訊端連線時傳送。XMLSocket
  在順利呼叫 XMLSocket.connect() 方法之後傳送。XMLSocket
  在傳送或收到原始資料之後傳送。XMLSocket
 Inherited[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。EventDispatcher
  發生輸入/輸出錯誤,因而導致傳送或接收作業失敗時傳送。XMLSocket
  當 XMLSocket.connect() 方法的呼叫嘗試連線至呼叫者安全執行程序以外的伺服器,或小於 1024 的連接埠時傳送。XMLSocket
屬性詳細資訊

connected

屬性
connected:Boolean  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

指出此 XMLSocket 物件目前是否已連線。 您也可以透過註冊 connect 事件和 ioError 事件,檢查連線是否成功。



實作
    public function get connected():Boolean

相關 API 元素

timeout

屬性 
timeout:int

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5, Flash Lite 4

指出等待連線的毫秒數。

如果在指定的時間內連線不成功,連線會失敗。預設值為 20,000 (二十秒)。



實作
    public function get timeout():int
    public function set timeout(value:int):void
建構函式詳細資料

XMLSocket

()建構函式
public function XMLSocket(host:String = null, port:int = 0)

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

建立新的 XMLSocket 物件。 如果沒有指定任何參數,就會建立最初中斷連線的通訊端。 如果有指定參數,就會嘗試連線至指定的主機和連接埠。

注意:強烈建議使用「不含參數」的建構函式形式,接著加入任何事件偵聽程式,最後再搭配 hostport 參數呼叫 connect 方法。這個序列會保證所有事件偵聽程式都會正常運作。

參數
host:String (default = null) — 完整的 DNS 網域名稱,或是格式為 .222.333.444 的 IP 位址。在 Flash Player 9.0.115.0 和 AIR 1.0 (和更新版本) 中,您可以指定 IPv6 位址,例如 rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]。您也可以指定 null,以連線到 SWF 檔所在的主機伺服器。如果發出這個呼叫的 SWF 檔正要在某個網頁瀏覽器中執行,則 host 就必須與該 SWF 檔位於相同的網域中。
 
port:int (default = 0) — 目標主機上用來建立連線的 TCP 連接埠號。在 Flash Player 9.0.124.0 和更新版本中,目標主機必須提供通訊端原則檔,以指定允許從提供 SWF 檔之主機至指定連接埠的通訊端連線。在舊版 Flash Player 中,只有在連線至低於 1024 的連接埠號,或是要連線至 SWF 檔提供主機以外的主機時,才需要通訊端原則檔。

相關 API 元素

方法詳細資訊

close

()方法
public function close():void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會關閉 XMLSocket 物件所指定的連線。 只有當伺服器關閉連線時,才會傳送 close 事件。當您呼叫 close() 方法時,則不會傳送此事件。

相關 API 元素

connect

()方法 
public function connect(host:String, port:int):void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會使用指定的 TCP 連接埠,連線到指定的網際網路主機。

如果您將 host 參數指定為 null,聯繫的主機便是呼叫 XMLSocket.connect() 的檔案所在的電腦。例如,若發出呼叫的檔案是從 www.adobe.com 下載,則 host 參數指定為 null 表示您要連線至 www.adobe.com。

如果您希望防止任何檔案使用此方法,可以在包含 SWF 內容的 HTML 頁面中,設定 objectembed 標籤的 allowNetworking 參數。

如需詳細資訊,請參閱「Flash Player 開發人員中心」主題:「安全性」。

參數

host:String — 完整的 DNS 網域名稱,或是格式為 111.222.333.444 的 IP 位址。您也可以指定 null,以連線到 SWF 檔所在的主機伺服器。如果發出呼叫的檔案是在網頁瀏覽器中執行的 SWF 檔,則 host 必須與該檔案位於相同的網域。
 
port:int — 目標主機上用來建立連線的 TCP 連接埠號。在 Flash Player 9.0.124.0 和更新版本中,目標主機必須提供通訊端原則檔,以指定允許從提供 SWF 檔之主機至指定連接埠的通訊端連線。在舊版 Flash Player 中,只有在連線至低於 1024 的連接埠號,或是要連線至 SWF 檔提供主機以外的主機時,才需要通訊端原則檔。


事件
securityError:SecurityErrorEvent — 連線作業嘗試連線至呼叫者安全執行程序以外的主機,或需要通訊端原則檔的連接埠。在目標主機上使用通訊端原則檔,即可解決這兩個問題。
 
data:DataEvent — 在已經收到原始資料時傳送。
 
connect:Event — 在已建立網路連線時傳送。

擲回值
SecurityError — 本機不受信任的 檔可能無法與網際網路進行通訊。 藉由將檔案重新分類為「具有網路連線的本機」或受信任,即可解決此限制。
 
SecurityError — 您無法指定大於 65535 的通訊端連接埠。

相關 API 元素

send

()方法 
public function send(object:*):void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

object 參數中所指定的 XML 物件或資料轉換成字串,並在後面加上零 (0) 位元組後傳輸到伺服器。 如果 object 是 XML 物件,這個字串就是此 XML 物件的 XML 文字表示。 傳送作業並不是同步的。它雖然會立即傳回,但是可能要稍後才會傳輸資料。 XMLSocket.send() 方法並不會傳回值來表示資料是否已傳輸成功。

如果您並未使用 XMLSocket.connect(),將 XMLSocket 物件連線至伺服器,XMLSocket.send() 作業就會失敗。

參數

object:* — 要傳輸至伺服器的 XML 物件或其他資料。


擲回值
IOError — XMLSocket 物件未連線至伺服器。

相關 API 元素

事件詳細資訊

close

事件
事件物件類型: flash.events.Event
屬性 Event.type = flash.events.Event.CLOSE

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會在伺服器關閉通訊端連線時傳送。 只有當伺服器關閉連線時,才會傳送 close 事件。當您呼叫 XMLSocket.close() 方法時,則不會傳送此事件。

Event.CLOSE 常數會定義 close 事件物件的 type 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget正主動使用事件偵聽程式處理 Event 物件的物件。
target其連線已關閉的物件。

connect

事件  
事件物件類型: flash.events.Event
屬性 Event.type = flash.events.Event.CONNECT

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會在順利呼叫 XMLSocket.connect() 方法之後傳送。

Event.CONNECT 常數會定義 connect 事件物件的 type 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget正主動使用事件偵聽程式處理 Event 物件的物件。
target已建立網路連線的 Socket 或 XMLSocket 物件。

data

事件  
事件物件類型: flash.events.DataEvent
屬性 DataEvent.type = flash.events.DataEvent.DATA

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

在傳送或收到原始資料之後傳送。

定義 type 屬性值 (data 事件物件)。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget正主動使用事件偵聽程式處理 Event 物件的物件。
data已載入 Flash Player 或 Adobe AIR 的原始資料。
target接收資料的 XMLSocket 物件。

ioError

事件  
事件物件類型: flash.events.IOErrorEvent
屬性 IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

發生輸入/輸出錯誤,因而導致傳送或接收作業失敗時傳送。

定義 ioError 事件物件的 type 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget正主動使用事件偵聽程式處理 Event 物件的物件。
errorID與特定錯誤相關聯的參考號碼 (僅限 AIR)。
target遭遇輸入/輸出錯誤的網路物件。
text要顯示為錯誤訊息的文字。

securityError

事件  
事件物件類型: flash.events.SecurityErrorEvent
屬性 SecurityErrorEvent.type = flash.events.SecurityErrorEvent.SECURITY_ERROR

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會當 XMLSocket.connect() 方法的呼叫嘗試連線至呼叫者安全執行程序以外的伺服器,或小於 1024 的連接埠時傳送。

SecurityErrorEvent.SECURITY_ERROR 常數會定義 securityError 事件物件的 type 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget正主動使用事件偵聽程式處理 Event 物件的物件。
target回報安全性錯誤的網路物件。
text要顯示為錯誤訊息的文字。

相關 API 元素

XMLSocketExample.as

下列範例會使用 XMLSocketExample 類別,透過 XMLSocket 傳送資料,並在 XMLSocket 事件期間列印資訊。 這是透過下列步驟完成:
  1. XMLSocketExample 建構函式會建立 XMLSocket 實體 socket,將 socket 傳遞給 ConfigureListeners() (將在下列範例中說明),然後使用主機名稱 "localhost" 與 8080 的埠號,呼叫 XMLSocket 的 connect() 方法。
  2. 接著呼叫 configureListeners() 方法,將偵聽程式加入每一個支援的 XMLSocket 事件:
    • closeHandler() 會偵聽 close 事件,並在網路連線中斷後將事件送出。
    • connectHandler() 會偵聽 connect 事件,並在建立網路連線後將事件送出。
    • dataHandler() 會偵聽 data 事件,並在每次 XMLSocket 收到新的資料後將事件送出。
    • progressHandler() 會偵聽 progress 事件,並在呼叫 send() 後及傳送作業進行時將事件送出。
    • securityErrorHandler() 會偵聽 securityError 事件,並在嘗試使用錯誤的本機播放安全性設定或小於 1024 的埠號存取 XMLSocket 時將事件送出。
    • ioErrorHandler() 會偵聽 ioError 事件,並只在傳送或接收資料失敗時將事件送出。

注意:

  • 在編譯 SWF 檔時,您必須將「本機播放安全性」設定為「只存取網路」。
  • 若要讓此範例正確運作,您需要能在網域上使用連接埠 8080 的伺服器。
  • 如果您執行 Flash Player 9.0.124.0 或更新版本,則必須在伺服器上放置通訊端原則檔,以允許從您的網域至連接埠 8080 的通訊端連線。如需有關提供通訊端原則檔的詳細資訊,請參閱 Flash Player 開發人員中心主題:「設定通訊端原則檔伺服器」。

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.XMLSocket;

    public class XMLSocketExample extends Sprite {
        private var hostName:String = "localhost";
        private var port:uint = 8080;
        private var socket:XMLSocket;

        public function XMLSocketExample() {
            socket = new XMLSocket();
            configureListeners(socket);
            if (hostName && port) {
                socket.connect(hostName, port);
            }
        }

        public function send(data:Object):void {
            socket.send(data);
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.CLOSE, closeHandler);
            dispatcher.addEventListener(Event.CONNECT, connectHandler);
            dispatcher.addEventListener(DataEvent.DATA, dataHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        }

        private function closeHandler(event:Event):void {
            trace("closeHandler: " + event);
        }

        private function connectHandler(event:Event):void {
            trace("connectHandler: " + event);
        }

        private function dataHandler(event:DataEvent):void {
            trace("dataHandler: " + event);
        }

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

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }

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




[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。