パッケージflash.net
クラスpublic class XMLSocket
継承XMLSocket Inheritance EventDispatcher Inheritance Object

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

XMLSocket クラスはクライアントソケットを実装しており、Flash Player を実行するコンピュータはこのソケットを使用して、IP アドレスまたはドメイン名で識別されるサーバーコンピュータと通信することができます。XMLSocket クラスは、リアルタイムのチャットシステムなど待ち時間を短くすることが求められるクライアント/サーバーアプリケーションに適しています。従来の HTTP ベースチャットソリューションは頻繁にサーバーをポーリングし、HTTP 要求を使用して新しいメッセージをダウンロードします。それに対して、XMLSocket チャットソリューションはサーバーに対して開いた接続を維持するため、サーバーはクライアントから要求を受けずにただちに着信メッセージを送ることができます。XMLSocket クラスを使用するには、サーバーコンピュータは XMLSocket クラスで使用されるプロトコルに対応したデーモンを実行する必要があります。プロトコルの説明を次の一覧に示します。

XMLSocket.connect()メソッドが接続できる TCP ポートの番号は、1024 以上です。この制限により、XMLSocket オブジェクトと通信するサーバーデーモンにも、1024 以上のポート番号を割り当てる必要があります。1024 未満のポート番号は、FTP、Telnet、HTTP などのシステムサービスによって使用されることが多いため、XMLSocket オブジェクトはセキュリティ上の理由からこれらのポートにアクセスできません。ポート番号の制限により、これらのリソースが不適切にアクセスおよび乱用される可能性が少なくなります。

XMLSocket オブジェクトと通信するようにサーバーを設定すると、問題が発生する可能性があります。アプリケーションがリアルタイムのインタラクティブ機能を必要としない場合は、XMLSocket クラスの代わりに、URLLoader クラスを使用します。XMLSocket クラスのメソッドを使用するには、まず new XMLSocket コンストラクタを使用して XMLSocket オブジェクトを作成する必要があります。

このクラスを使用するときは、Flash Player セキュリティモデルを考慮してください。

詳細については、以下を参照してください。

例を表示

関連項目

flash.net.URLLoader.load()
flash.net.URLLoader
ソケットの接続


パブリック プロパティ
 プロパティ定義元
  connected : Boolean
[read-only] この XMLSocket オブジェクトが現在、接続されているかどうかを示します。
XMLSocket
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリック メソッド
 メソッド定義元
  
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
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
   サーバーによりソケット接続が閉じられたときに送出されます。XMLSocket
   XMLSocket.connect() メソッドの呼び出しが成功したときに送出されます。XMLSocket
   未処理のデータが送受信された後に送出されます。XMLSocket
 Inherited 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) — FQDN (完全修飾ドメイン名)、つまり aaa.bbb.ccc.ddd という形式の IP アドレスです。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元の SWF ファイルが Web ブラウザ内で実行されている場合は、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 以上のポートにのみ接続できます。

nullhost パラメータに対して指定した場合は、XMLSocket.connect() を呼び出す SWF ファイルが存在するホストに接続します。たとえば、www.adobe.com から SWF ファイルをダウンロードし、host パラメータに null を指定した場合は、www.adobe.com の IP アドレスを入力した場合と同じ結果となります。

Flash Player 7 より前のバージョンの Player で SWF ファイルを実行している場合、host は、呼び出し元の SWF ファイルと同じスーパードメインに属している必要があります。たとえば、www.adobe.com に置かれた SWF ファイルからは、store.adobe.com にある SWF ファイルに対して変数の送受信を行えます。これは、どちらのファイルも adobe.com という同一のスーパードメインに属するためです。

Flash Player 7 以降で SWF ファイルを実行している場合、host は正確に同じドメインに置かれている必要があります。たとえば、www.adobe.com にある SWF ファイルが Flash Player 5 用にパブリッシュされているにもかかわらず、Flash Player 7 以降で実行されている場合は、このファイルは同様に www.adobe.com に置かれている SWF ファイルに対してのみ、変数の送受信を行えます。別のドメインに対して変数の送受信を行うには、アクセスする SWF ファイルをホストするサーバー上に、クロスドメインポリシーファイルを配置します。

SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメータ (object タグおよび embed タグ) を設定します。

詳細については、以下を参照してください。

パラメータ

host:String — FQDN (完全修飾ドメイン名)、つまり aaa.bbb.ccc.ddd という形式の IP アドレスです。null を指定して、SWF ファイルが存在するホストサーバーに接続することもできます。呼び出し元の SWF ファイルが Web ブラウザ内で実行されている場合は、host が SWF ファイルと同じドメイン内に存在する必要があります。
 
port:int — 接続の確立に使用するホスト上の TCP ポート番号です。ポリシーファイルを使用している場合を除き、ポート番号は 1024 以上である必要があります。


イベント
securityError:SecurityErrorEvent — 呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとした接続操作です。どちらの問題も、サーバーで XMLSocket ポリシーファイルを使用することで回避できます。
 
data:DataEvent — 未処理のデータを受信したときに送出されます。
 
connect:Event — ネットワーク接続が確立されたときに送出されます。

例外
SecurityError — 信頼されていないローカル SWF はインターネットへの接続を許可されません。これは、ネットワークアクセスを許可されたローカル 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
Event.type property = flash.events.Event.CLOSE

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

サーバーによりソケット接続が閉じられたときに送出されます。close イベントは、サーバーにより接続が閉じられたときのみ送出されます。XMLSocket.close() メソッドを呼び出しても送出されません。

type プロパティ (close イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target接続が閉じられたオブジェクトです。
connect イベント  
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.CONNECT

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

XMLSocket.connect() メソッドの呼び出しが成功した後に送出されます。

type プロパティ (connect イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetネットワーク接続を確立した Socket オブジェクトまたは XMLSocket オブジェクトです。
data イベント  
イベントオブジェクトの型: flash.events.DataEvent
DataEvent.type property = flash.events.DataEvent.DATA

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

未処理のデータが送受信された後に送出されます。

type プロパティ (data イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
dataFlash Player にロードされる未処理のデータです。
targetデータを受け取る XMLSocket オブジェクトです。
ioError イベント  
イベントオブジェクトの型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

入出力エラーが発生して送信または受信操作が失敗したときに送出されます。

type プロパティ (ioError イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target入出力エラーが発生したネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。
securityError イベント  
イベントオブジェクトの型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

XMLSocket.connect() メソッドの呼び出しによって、呼び出し元のセキュリティサンドボックスの外にあるサーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。

SecurityErrorEvent.SECURITY_ERROR 定数は、type プロパティ (securityError イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetセキュリティエラーを報告するネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

関連項目

例の使用法
XMLSocketExample.as

次の例では、クラス XMLSocketExample を使用して、XMLSocket でデータを送信し、XMLSocket イベント時に情報をプリントします。ここでは以下の手順を実行します。
  1. XMLSocketExample コンストラクタが socket という名前の XMLSocket インスタンスを作成し、socket を後述の ConfigureListeners() に渡します。次に XMLSocket の connect() メソッドを呼び出します。この呼び出しには、ホスト名 "localhost" とポート番号 8080 を使用します。
  2. 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_jp/ActionScriptLangRefV3/flash/net/XMLSocket.html