| 套件 | flash.net |
| 類別 | public class XMLSocket |
| 繼承 | XMLSocket EventDispatcher Object |
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
XMLSocket.connect() 方法只能連接到埠號大於或等於 1024 的 TCP 連接埠。 這項限制的其中一個影響就是,與 XMLSocket 物件連線的伺服器常駐程式也必須指定給埠號大於或等於 1024 的連接埠。 埠號在 1024 以下的連接埠通常是供系統服務使用,例如 FTP、Telnet 和 HTTP,因此基於安全上的考量,禁止 XMLSocket 物件使用這些連接埠。 限制連接埠號可防止有人不當存取及濫用這些資源。
設定伺服器與 XMLSocket 物件通訊可能會很困難。 如果應用程式不需要即時的互動性,請使用 URLLoader 類別取代 XMLSocket 類別。 若要使用 XMLSocket 類別的方法,您必須先使用建構函式 new XMLSocket 建立 XMLSocket 物件。
使用此類別時,必須顧及 Flash Player 安全性模型:
如需詳細資訊,請參閱下列章節:
請參閱
| 屬性 | 定義自 | ||
|---|---|---|---|
| connected : Boolean
[read-only]
指出此 XMLSocket 物件目前是否已連線。
| XMLSocket | ||
![]() | constructor : Object
類別物件的參照或是特定物件實體的建構函數。
| Object | |
![]() | prototype : Object
[static]
類別或函數物件之原型物件的參照。
| Object | |
| 方法 | 定義自 | ||
|---|---|---|---|
|
建立新的 XMLSocket 物件。
| XMLSocket | ||
![]() |
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式¡以便讓偵聽程式收到事件的通知。
| EventDispatcher | |
|
會關閉 XMLSocket 物件所指定的連線。
| XMLSocket | ||
|
會使用指定的 TCP 連接埠,連線到指定的網際網路主機。
| XMLSocket | ||
![]() |
會將事件傳送到事件流程。
| EventDispatcher | |
![]() |
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。
| EventDispatcher | |
![]() |
指出物件是否有已定義的指定屬性。
| Object | |
![]() |
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。
| Object | |
![]() |
指出指定的屬性是否存在,以及是否可列舉。
| Object | |
![]() |
會從 EventDispatcher 物件移除偵聽程式。
| EventDispatcher | |
|
將 object 參數中所指定的 XML 物件或資料轉換成字串,並在後面加上零 (0) 位元組後傳輸到伺服器。
| XMLSocket | ||
![]() |
為迴圈作業設定動態屬性的可用性。
| Object | |
![]() |
會傳回指定之物件的字串形式。
| Object | |
![]() |
會傳回指定之物件的基本值。
| Object | |
![]() |
檢查此 EventDispatcher 物件是否已註冊為事件偵聽程式,或者此物件的任何祖先已註冊為特定的事件類型。
| EventDispatcher | |
| 事件 | 摘要 | 定義自 | ||
|---|---|---|---|---|
![]() | 當 Flash Player 取得作業系統焦點並成為作用中狀態時傳送。 | EventDispatcher | ||
| 會在伺服器關閉通訊端連線時傳送。 | XMLSocket | |||
| 在順利呼叫 XMLSocket.connect() 方法之後傳送。 | XMLSocket | |||
| 在傳送或收到原始資料之後傳送。 | XMLSocket | |||
![]() | 當 Flash Player 失去作業系統焦點並成為停用狀態時傳送。 | EventDispatcher | ||
| 發生輸入/輸出錯誤,因而導致傳送或接收作業失敗時傳送。 | XMLSocket | |||
| 當 XMLSocket.connect() 方法的呼叫嘗試連線至呼叫者安全執行程序以外的伺服器,或小於 1024 的連接埠時傳送。 | XMLSocket | |||
| connected | 屬性 |
connected:Boolean [read-only]
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
指出此 XMLSocket 物件目前是否已連線。 您也可以透過註冊 connect 事件和 ioError 事件,檢查連線是否成功。
public function get connected():Boolean
請參閱
| XMLSocket | () | 建構函式 |
public function XMLSocket(host:String = null, port:int = 0)
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
建立新的 XMLSocket 物件。 XMLSocket 物件在剛開始時並未與任何伺服器連線。 您必須呼叫 XMLSocket.connect() 方法,將物件連線至伺服器。
host:String (default = null) — 完整的 DNS 網域名稱,或是格式為 aaa.bbb.ccc.ddd 的 IP 位址。 您也可以指定 null,以連線到 SWF 檔所在的主機伺服器。 如果發出這個呼叫的 SWF 檔正要在某個網頁瀏覽器中執行,則 host 就必須與該 SWF 檔位於相同的網域中。
|
|
port:int (default = 0) — 主機上用來建立連線的 TCP 連接埠號。 除非已使用原則檔,否則此連接埠號必須是 1024 (含) 以上。
|
請參閱
| close | () | 方法 |
public function close():void
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
會關閉 XMLSocket 物件所指定的連線。 只有當伺服器關閉連線時,才會傳送 close 事件。當您呼叫 close() 方法時,則不會傳送此事件。
請參閱
| connect | () | 方法 |
public function connect(host:String, port:int):void
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
會使用指定的 TCP 連接埠,連線到指定的網際網路主機。 根據預設,除非您已使用原則檔,否則只能連線至埠號 1024 以上的連接埠。
如果您將 host 參數指定為 null,則聯繫的主機就是呼叫 XMLSocket.connect() 的 SWF 檔所在的機器。 例如,如果您是從 www.adobe.com 下載 SWF 檔,那麼將 host 參數指定為 null 就等於是輸入 www.adobe.com 的 IP 位址。
若 SWF 檔是在早於 Flash Player 7 版本的播放程式中執行,則該 SWF 檔中的 host 必須和發出這個呼叫的 SWF 檔位於相同的父網域中。 例如,位於 www.adobe.com 的 SWF 檔可以從位於 store.adobe.com 的 SWF 檔中傳送或接收變數,因為兩個檔案都位於相同的父網域 (adobe.com) 中。
在 Flash Player 7 或更新版本中執行的任何版本 SWF 檔中,其 host 必須位於完全相同的網域中。 例如,發行為 Flash Player 5 格式、位於 www.adobe.com 網域中、但在 Flash Player 7 或更新版本中執行的 SWF 檔,只能從同樣位於 www.adobe.com 的 SWF 檔傳送或接收變數。 若要傳送或接收來自不同網域的變數,可以在裝載您所要存取之 SWF 檔的伺服器上置入「跨網域原則檔案」。
您可以拒絕 SWF 檔使用這個方法,方式是在包含 SWF 內容的 HTML 網頁中,設定 object 和 embed 標籤的 allowNetworking 參數。
如需詳細資訊,請參閱下列章節:
參數
host:String — 完整的 DNS 網域名稱,或是格式為 aaa.bbb.ccc.ddd 的 IP 位址。 您也可以指定 null,以連線到 SWF 檔所在的主機伺服器。 如果發出這個呼叫的 SWF 檔正要在某個網頁瀏覽器中執行,則 host 就必須與該 SWF 檔位於相同的網域中。
|
|
port:int — 主機上用來建立連線的 TCP 連接埠號。 除非已使用原則檔,否則此連接埠號必須是 1024 (含) 以上。
|
securityError: — 連線作業嘗試連線至呼叫者安全執行程序以外的伺服器,及/或小於 1024 的連接埠。 這兩個問題都可以使用伺服器上的 XMLSocket 原則檔案來解決。 |
|
data: — 在已經收到原始資料時傳送。 |
|
connect: — 在已建立網路連線時傳送。 |
SecurityError — 本機不受信任的 SWF 檔可能無法與網際網路進行通訊。 您可以透過將此 SWF 檔重新分類為「具有網路連線的本機」或受信任,解決此問題。
|
|
SecurityError — 您無法指定大於 65535 的通訊端連接埠。
|
請參閱
| send | () | 方法 |
public function send(object:*):void
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
將 object 參數中所指定的 XML 物件或資料轉換成字串,並在後面加上零 (0) 位元組後傳輸到伺服器。 如果 object 是 XML 物件,這個字串就是此 XML 物件的 XML 文字表示。 傳送作業並不是同步的。它雖然會立即傳回,但是可能要稍後才會傳輸資料。 XMLSocket.send() 方法並不會傳回值來表示資料是否已傳輸成功。
如果您並未使用 XMLSocket.connect(),將 XMLSocket 物件連線至伺服器,XMLSocket.send() 作業就會失敗。
參數
object:* — 要傳輸至伺服器的 XML 物件或其它資料。
|
IOError — XMLSocket 物件未連線至伺服器。
|
請參閱
| close | 事件 |
flash.events.Event
flash.events.Event.CLOSE
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
會在伺服器關閉通訊端連線時傳送。 只有當伺服器關閉連線時,才會傳送 close 事件。當您呼叫 XMLSocket.close() 方法時,則不會傳送此事件。
close 事件物件的 type 屬性值。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
currentTarget | 以事件偵聽程式主動處理 Event 物件的物件。 |
target | 其連線已關閉的物件。 |
| connect | 事件 |
flash.events.Event
flash.events.Event.CONNECT
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
會在順利呼叫 XMLSocket.connect() 方法之後傳送。
connect 事件物件的 type 屬性值。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
currentTarget | 以事件偵聽程式主動處理 Event 物件的物件。 |
target | 已建立網路連線的 Socket 或 XMLSocket 物件。 |
| data | 事件 |
flash.events.DataEvent
flash.events.DataEvent.DATA
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
在傳送或收到原始資料之後傳送。
定義type 屬性值 (data 事件物件)。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
currentTarget | 以事件偵聽程式主動處理 Event 物件的物件。 |
data | 已載入 Flash Player 的原始資料。 |
target | 接收資料的 XMLSocket 物件。 |
| ioError | 事件 |
flash.events.IOErrorEvent
flash.events.IOErrorEvent.IO_ERROR
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
發生輸入/輸出錯誤,因而導致傳送或接收作業失敗時傳送。
定義ioError 事件物件的 type 屬性值。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
currentTarget | 以事件偵聽程式主動處理 Event 物件的物件。 |
target | 遭遇輸入/輸出錯誤的網路物件。 |
text | 要顯示為錯誤訊息的文字。 |
| securityError | 事件 |
flash.events.SecurityErrorEvent
flash.events.SecurityErrorEvent.SECURITY_ERROR
| 語言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
會當 XMLSocket.connect() 方法的呼叫嘗試連線至呼叫者安全執行程序以外的伺服器,或小於 1024 的連接埠時傳送。
SecurityErrorEvent.SECURITY_ERROR 常數會定義 securityError 事件物件的 type 屬性值。
這個事件具有下列屬性:
| 屬性 | 值 |
|---|---|
bubbles | false |
cancelable | false;沒有要取消的預設行為指令。 |
currentTarget | 以事件偵聽程式主動處理 Event 物件的物件。 |
target | 回報安全性錯誤的網路物件。 |
text | 要顯示為錯誤訊息的文字。 |
請參閱
socket,將 socket 傳遞給 ConfigureListeners() (將在下列範例中說明),然後使用主機名稱 "localhost" 與 8080 的埠號,呼叫 XMLSocket 的 connect() 方法。configureListeners() 方法,將偵聽程式加入每一個支援的 XMLSocket 事件:
closeHandler() 會偵聽 close 事件,並在網路連線中斷後將事件送出。connectHandler() 會偵聽 connect 事件,並在建立網路連線後將事件送出。dataHandler() 會偵聽 data 事件,並在每次 XMLSocket 收到新的資料後將事件送出。progressHandler() 會偵聽 progress 事件,並在呼叫 send() 後及傳送作業進行時將事件送出。securityErrorHandler() 會偵聽 securityError 事件,並在嘗試使用錯誤的本機播放安全性設定或小於 1024 的埠號存取 XMLSocket 時將事件送出。ioErrorHandler() 會偵聽 ioError 事件,並只在傳送或接收資料失敗時將事件送出。注意:
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);
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);
}
}
}
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/ActionScriptLangRefV3/flash/net/XMLSocket.html