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() 方法只能连接到端口号大于等于 1024 的 TCP 端口。 这种限制的一个后果是,向与 XMLSocket 对象通信的服务器守护程序分配的端口号也必须大于等于 1024。 端口号小于 1024 的端口通常用于系统服务(如 FTP、Telnet 和 HTTP),因此,出于安全方面的考虑,禁止 XMLSocket 对象使用这些端口。 这种端口号方面的限制可以减少不恰当地访问和滥用这些资源的可能性。

将服务器设置为与 XMLSocket 对象进行通信可能会遇到一些困难。 如果您的应用程序不需要进行实时交互,请使用 URLLoader 类,而不要使用 XMLSocket 类。 若要使用 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 端口建立到指定 Internet 主机的连接。
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) — 一个完全限定 DNS 域名,或 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 端口建立到指定 Internet 主机的连接。 除非使用策略文件,否则在默认情况下只能连接到端口 1024 或更高端口。

如果为 host 参数指定 null,则与调用 XMLSocket.connect() 的 SWF 文件所在的主机连接。 例如,如果 SWF 文件是从 www.adobe.com 下载的,则将 host 参数指定为 null 与输入 www.adobe.com 的 IP 地址效果相同。

如果 SWF 文件运行于 Flash Player 7 以前版本的播放器中,则 host 必须与发出此调用的 SWF 文件位于同一个超级域中。 例如,在位于 www.adobe.com 的 SWF 文件与位于 store.adobe.com 的 SWF 文件之间可以发送或接收变量,因为这两个文件都在同一个名为 adobe.com 的超级域中。

如果任何版本的 SWF 文件运行于 Flash Player 7 或更高版本中,则 host 必须位于完全相同的域中。 例如,位于 www.adobe.com 上的为 Flash Player 5 发布但运行于 Flash Player 7 或更高版本中的 SWF 文件只能向同样位于 www.adobe.com 的 SWF 文件发送(或从中接受)变量。 如果要向其它域发送或从中接收变量,可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件

可以在包含 SWF 内容的 HTML 页中设置 objectembed 标签的 allowNetworking 参数,防止 SWF 文件使用此方法。

有关详细信息,请参阅以下部分:

参数

host:String — 一个完全限定 DNS 域名,或 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 文件可能无法与 Internet 进行通信。 可通过将此 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() 方法时不调度该事件。

定义 close 事件对象的 type 属性值。

此事件具有以下属性:

属性
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() 方法后调度。

定义 connect 事件对象的 type 属性值。

此事件具有以下属性:

属性
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

在发送或接收原始数据后调度。

定义 data 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
data加载到 Flash Player 中的原始数据。
target接收数据的 XMLSocket 对象。
ioError 事件  
事件对象类型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在出现输入/输出错误并导致发送或接收操作失败时调度。

定义 ioError 事件对象的 type 属性值。

此事件具有以下属性:

属性
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 常量定义 securityError 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target报告安全错误的网络对象。
text要显示为错误消息的文本。

另请参见

示例 如何使用示例

下例使用 XMLSocketExample 类来通过 XMLSocket 发送数据并输出 XMLSocket 事件过程中的信息。 这是使用以下步骤完成的:
  1. XMLSocketExample 构造函数创建名为 socket 的 XMLSocket 实例,并将 socket 传递给 ConfigureListeners()(如下所述),然后使用主机名“localhost”和端口号 8080 调用 connect() XMLSocket 的方法。
  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_cn/ActionScriptLangRefV3/flash/net/XMLSocket.html