flash.net
public class Socket
继承Socket Inheritance EventDispatcher Inheritance Object
实现 IDataInput, IDataOutput

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

Socket 类使 代码可以建立套接字连接并读取和写入原始二进制数据。它与 XMLSocket 类似,但没有指定接收或传输的数据格式。

Socket 类与使用二进制协议的服务器一起使用时非常有用。

若要使用 Socket 类的方法,请先使用构造函数 new Socket 创建一个 Socket 对象。

只能与本地文件系统内容交互的沙箱中的 SWF 文件无法使用套接字。

目标主机上的套接字策略文件 指定 SWF 文件可从中建立套接字连接的主机,并指定可以建立这些连接的端口。在新近发布的几个版本的 Flash Player 中,有关套接字策略文件的安全要求变得更加严格。对于所有版本的 Flash Player,Adobe 建议使用套接字策略文件;在某些情况下,必须使用套接字策略文件。因此,如果使用的是 XMLSocket 对象,必要时请确保目标主机提供了套接字策略文件。

以下列表汇总了各个版本的 Flash Player 中针对套接字策略文件的要求:

但在 Adobe AIR 中,application 安全沙箱中的内容(使用 AIR 应用程序安装的内容)不受这些安全限制的约束。

有关安全性的详细信息,请参阅以下部分:

查看示例

另请参见

Socket connections


公共属性
 属性定义方
  bytesAvailable : uint
[只读 (read-only)] 输入缓冲区中可读取的数据的字节数。
Socket
  connected : Boolean
[只读 (read-only)] 指示此 Socket 对象目前是否已连接。
Socket
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  endian : String
指示数据的字节顺序;可能的值为来自 flash.utils.Endian 类的常量、Endian.BIG_ENDIAN 或 Endian.LITTLE_ENDIAN。
Socket
  objectEncoding : uint
在写入或读取对象时,控制所使用的 AMF 的版本。
Socket
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  timeout : uint
指示建立连接时需等待的毫秒数。
Socket
公共方法
 方法定义方
  
Socket(host:String = null, port:int = 0)
创建新的 Socket 对象。
Socket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
关闭套接字。
Socket
  
connect(host:String, port:int):void
将套接字连接到指定的主机和端口。
Socket
 Inherited
将事件调度到事件流中。
EventDispatcher
  
对套接字输出缓冲区中积累的所有数据进行刷新。
Socket
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
从套接字读取一个布尔值。
Socket
  
从套接字读取一个带符号字节。
Socket
  
readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从套接字读取 length 参数所指定的数据的字节数。
Socket
  
从套接字读取一个 IEEE 754 双精度浮点数。
Socket
  
从套接字读取一个 IEEE 754 单精度浮点数。
Socket
  
从套接字读取一个带符号的 32 位整数。
Socket
  
readMultiByte(length:uint, charSet:String):String
使用指定的字符集,从该字节流读取一个多字节字符串。
Socket
  
从以 AMF 序列化格式编码的套接字读取一个对象。
Socket
  
从套接字读取一个带符号的 16 位整数。
Socket
  
从套接字读取一个无符号字节。
Socket
  
从套接字读取一个无符号的 32 位整数。
Socket
  
从套接字读取一个无符号的 16 位整数。
Socket
  
从套接字读取一个 UTF-8 字符串。
Socket
  
从套接字读取 length 参数所指定的 UTF-8 数据的字节数,并返回一个字符串。
Socket
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
  
将一个布尔值写入套接字。
Socket
  
将一个字节写入套接字。
Socket
  
writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从指定的字节数组写入一系列字节。
Socket
  
将一个 IEEE 754 双精度浮点数写入套接字。
Socket
  
将一个 IEEE 754 单精度浮点数写入套接字。
Socket
  
将一个带符号的 32 位整数写入套接字。
Socket
  
使用指定的字符集,从该字节流写入一个多字节字符串。
Socket
  
以 AMF 序列化格式将一个对象写入套接字。
Socket
  
将一个 16 位整数写入套接字。
Socket
  
将一个无符号的 32 位整数写入套接字。
Socket
  
将以下数据写入套接字:一个无符号 16 位整数,它指示了指定 UTF-8 字符串的长度(以字节为单位),后面跟随字符串本身。
Socket
  
将一个 UTF-8 字符串写入套接字。
Socket
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  在服务器关闭套接字连接时调度。Socket
  在建立网络连接后调度。Socket
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  在出现输入/输出错误并导致发送或加载操作失败时调度。Socket
  若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 的端口,则进行调度。Socket
  在套接字接收到数据后调度。Socket
属性详细信息
bytesAvailable属性
bytesAvailable:uint  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

输入缓冲区中可读取的数据的字节数。

代码必须访问 bytesAvailable 以确保在尝试使用其中一种 read 方法读取数据之前,有足够的数据可用。



实现
    public function get bytesAvailable():uint
connected属性 
connected:Boolean  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示此 Socket 对象目前是否已连接。如果该套接字当前已连接,则对此属性的调用将返回值 true,否则将返回 false



实现
    public function get connected():Boolean
endian属性 
endian:String  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示数据的字节顺序;可能的值为来自 flash.utils.Endian 类的常量,Endian.BIG_ENDIANEndian.LITTLE_ENDIAN

默认值为 Endian.BIG_ENDIAN.



实现
    public function get endian():String
    public function set endian(value:String):void

另请参见

objectEncoding属性 
objectEncoding:uint  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

在写入或读取对象时,控制所使用的 AMF 的版本。



实现
    public function get objectEncoding():uint
    public function set objectEncoding(value:uint):void

另请参见

timeout属性 
timeout:uint  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指示建立连接时需等待的毫秒数。

如果在指定时间内未成功建立连接,则连接失败。默认值是 20,000(20 秒)。



实现
    public function get timeout():uint
    public function set timeout(value:uint):void
构造函数详细信息
Socket()构造函数
public function Socket(host:String = null, port:int = 0)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建新的 Socket 对象。若未指定参数,将创建一个最初处于断开状态的套接字。若指定了参数,则尝试连接到指定的主机和端口。

注意:强烈建议使用不带参数的构造函数形式,并添加任意事件侦听器,然后使用 hostport 参数调用 connect 方法。此序列将确保所有事件侦听器工作正常。

参数
host:String (default = null) — 一个完全限定的 DNS 域名,或 111.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 文件正在 Web 浏览器中运行,则 host 必须与 SWF 文件位于同一个域中。
 
port:int (default = 0) — 用于建立连接的目标主机上的 TCP 端口号。在 Flash Player 9.0.124.0 及更高版本中,目标主机必须提供套接字策略文件,以指定允许建立从提供 SWF 文件的主机到指定端口的套接字连接。在早期版本的 Flash Player 中,仅在要连接到小于 1024 的端口号或连接到除提供 SWF 文件的主机之外的主机时,才需要使用套接字策略文件。

事件
connect:Event — 在建立网络连接后调度。
 
ioError:IOErrorEvent — 在出现输入/输出错误并由此导致连接失败时调度。
 
securityError:SecurityErrorEvent此错误出现在 SWF 内容中。如果对 Socket.connect() 的调用尝试连接到未提供套接字策略文件的服务器,或尝试连接到其策略文件未允许进行调用的主机访问指定端口的服务器,则调度此事件。有关套接字策略文件的详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。

引发
SecurityError — 此错误出现在 SWF 内容中 原因如下:
  • 与本地文件系统内容交互的文件无法与 Internet 进行通信。您可以通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来解决此问题。此限制不是为应用程序安全沙箱中的 AIR 应用程序内容设置的。
  • 您不能指定高于 65535 的套接字端口。
方法详细信息
close()方法
public function close():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

关闭套接字。在调用 close() 方法之后,将无法读取或写入任何数据。

仅在服务器关闭连接时调度 close 事件;在调用 close() 方法时不调度该事件。

可通过再次对 Socket 对象调用 connect() 方法来重复使用该对象。


引发
IOError — 无法关闭套接字,或者套接字未打开。
connect()方法 
public function connect(host:String, port:int):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将套接字连接到指定的主机和端口。如果连接立即失败,则调度一个事件或引发一个异常。如果指定了主机,则调度一个错误事件;如果未指定主机,则引发异常。另外,连接的状态由事件来报告。如果已连接上套接字,则现有的连接将首先关闭。

参数

host:String — 要连接到的主机的名称或 IP 地址。如果未指定主机,则要连接的主机为执行调用的 文件所在的主机。如果不指定主机,请使用事件侦听器来确定连接是否成功。
 
port:int — 要连接的端口号。


事件
connect:Event — 在建立网络连接后调度。
 
ioError:IOErrorEvent — 在指定了主机但出现输入/输出错误并由此导致连接失败时调度。
 
securityError:SecurityErrorEvent — 如果对 Socket.connect() 的调用试图与未提供套接字策略文件的服务器进行连接,或者试图与其策略文件未授予执行调用的主机对指定端口的访问权的服务器进行连接,则调度此事件。有关详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。

引发
IOError — 未指定任何主机,而且连接失败。
 
SecurityError — 此错误出现在 SWF 内容中 原因如下:
  • 本地不受信任的 SWF 文件可能无法与 Internet 进行通信。可以通过将此文件重新分类为只能与远程内容交互的文件或受信任的文件来突破此限制。
  • 您不能指定高于 65535 的套接字端口。
  • 在包含 SWF 内容的 HTML 页中,objectembed 标签的 allowNetworking 参数设置为 "none"

另请参见

flush()方法 
public function flush():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

对套接字输出缓冲区中积累的所有数据进行刷新。write 方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readBoolean()方法 
public function readBoolean():Boolean

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个布尔值。在读取一个字节之后,如果该字节不为零,则该方法返回 true,否则返回 false

返回
Boolean — 如果所读取的字节不为零,则值为 true,否则为 false

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readByte()方法 
public function readByte():int

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个带符号字节。

返回
int — 从 -128 至 127 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readBytes()方法 
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取 length 参数所指定的数据的字节数。从 offset 所指示的位置开始,将这些字节读入指定的字节数组。

参数

bytes:ByteArray — 要将数据读入的 ByteArray 对象。
 
offset:uint (default = 0) — 数据读取的偏移量应从该字节数组中开始。
 
length:uint (default = 0) — 要读取的字节数。默认值 0 导致读取所有可用的数据。


引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readDouble()方法 
public function readDouble():Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个 IEEE 754 双精度浮点数。

返回
Number — 一个 IEEE 754 双精度浮点数。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readFloat()方法 
public function readFloat():Number

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个 IEEE 754 单精度浮点数。

返回
Number — 一个 IEEE 754 单精度浮点数。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readInt()方法 
public function readInt():int

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个带符号的 32 位整数。

返回
int — 从 -2147483648 至 2147483647 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readMultiByte()方法 
public function readMultiByte(length:uint, charSet:String):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

使用指定的字符集,从该字节流读取一个多字节字符串。

参数

length:uint — 要从字节流中读取的字节数。
 
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift_jis""CN-GB""iso-8859-1"。有关完整列表,请参阅Supported Character Sets

注意:如果当前系统无法识别 charSet 参数的值,则应用程序将使用系统的默认代码页作为字符集。例如,charSet 参数的值(如在使用 01 而不是 1myTest.readMultiByte(22, "iso-8859-01") 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。在其他计算机上,应用程序将使用系统的默认代码页。

返回
String — UTF-8 编码的字符串。

引发
EOFError — 可读取的数据不足。
readObject()方法 
public function readObject():*

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从以 AMF 序列化格式编码的套接字读取一个对象。

返回
* — 反序列化的对象

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

readShort()方法 
public function readShort():int

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个带符号的 16 位整数。

返回
int — 从 -32768 至 32767 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readUnsignedByte()方法 
public function readUnsignedByte():uint

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个无符号字节。

返回
uint — 从 0 至 255 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readUnsignedInt()方法 
public function readUnsignedInt():uint

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个无符号的 32 位整数。

返回
uint — 从 0 至 4294967295 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readUnsignedShort()方法 
public function readUnsignedShort():uint

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个无符号的 16 位整数。

返回
uint — 从 0 至 65535 的值。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readUTF()方法 
public function readUTF():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取一个 UTF-8 字符串。假定该字符串的前缀是指示字符串长度(以字节为单位)的无符号短整数。

返回
String — UTF-8 字符串。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
readUTFBytes()方法 
public function readUTFBytes(length:uint):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从套接字读取 length 参数所指定的 UTF-8 数据的字节数,并返回一个字符串。

参数

length:uint — 要读取的字节数。

返回
String — UTF-8 字符串。

引发
EOFError — 可读取的数据不足。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
writeBoolean()方法 
public function writeBoolean(value:Boolean):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个布尔值写入套接字。此方法写入了一个字节,其值为 1 (true ) 或 0 ( false)。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:Boolean — 要写入套接字的值:1 (true ) 或 0 ( false)。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeByte()方法 
public function writeByte(value:int):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个字节写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:int — 要写入套接字的值。使用了该值的低 8 位;忽略了高 24 位。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeBytes()方法 
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从指定的字节数组写入一系列字节。写入操作从 offset 指定的位置开始。

如果省略了 length 参数,则默认长度 0 将导致该方法从 offset 开始写入整个缓冲区。

如果还省略了 offset 参数,则写入整个缓冲区。

如果 offsetlength 超出了范围,则调整它们以匹配 bytes 数组的开头和结尾。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

bytes:ByteArray — 要从中读取数据的 ByteArray 对象。
 
offset:uint (default = 0)bytes ByteArray 对象中从零开始的偏移量,应由此开始执行数据写入。
 
length:uint (default = 0) — 要写入的字节数。默认值 0 导致从 offset 参数指定的值开始写入整个缓冲区。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeDouble()方法 
public function writeDouble(value:Number):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个 IEEE 754 双精度浮点数写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:Number — 要写入套接字的值。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeFloat()方法 
public function writeFloat(value:Number):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个 IEEE 754 单精度浮点数写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:Number — 要写入套接字的值。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeInt()方法 
public function writeInt(value:int):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个带符号的 32 位整数写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:int — 要写入套接字的值。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeMultiByte()方法 
public function writeMultiByte(value:String, charSet:String):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

使用指定的字符集,从该字节流写入一个多字节字符串。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:String — 要写入的字符串值。
 
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift_jis""CN-GB""iso-8859-1"。有关完整列表,请参阅Supported Character Sets

另请参见

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

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

以 AMF 序列化格式将一个对象写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

object:* — 要进行序列化处理的对象。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeShort()方法 
public function writeShort(value:int):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个 16 位整数写入套接字。写入的字节如下:

            (v >> 8) & 0xff v & 0xff
          

使用了该参数的低 16 位;忽略了高 16 位。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:int — 要写入套接字的值。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeUnsignedInt()方法 
public function writeUnsignedInt(value:uint):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个无符号的 32 位整数写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:uint — 要写入套接字的值。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeUTF()方法 
public function writeUTF(value:String):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将以下数据写入套接字:一个无符号 16 位整数,它指示了指定 UTF-8 字符串的长度(以字节为单位),后面跟随字符串本身。

写入字符串之前,该方法会计算表示该字符串的所有字符所需的字节数。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:String — 要写入套接字的字符串。


引发
RangeError — 长度大于 65535。
 
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

writeUTFBytes()方法 
public function writeUTFBytes(value:String):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将一个 UTF-8 字符串写入套接字。

注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。

参数

value:String — 要写入套接字的字符串。


引发
IOError — 套接字上发生 I/O 错误,或者套接字未打开。

另请参见

事件详细信息
close 事件
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.CLOSE

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

在服务器关闭套接字连接时调度。仅在服务器关闭连接时调度 close 事件;在调用 Socket.close() 方法时不调度该事件。

Event.CLOSE 常量定义 close 事件对象的 type 属性的值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已关闭其连接的对象。
connect 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.CONNECT

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

在建立网络连接后调度。

Event.CONNECT 常量定义 connect 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已建立网络连接的 Socket 或 XMLSocket 对象。
ioError 事件  
事件对象类型: flash.events.IOErrorEvent
属性 IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

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

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

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
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

若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 端口,则进行调度。

SecurityErrorEvent.SECURITY_ERROR 常量定义 securityError 事件对象的 type 属性值。

此事件具有以下属性:

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

另请参见

socketData 事件  
事件对象类型: flash.events.ProgressEvent
属性 ProgressEvent.type = flash.events.ProgressEvent.SOCKET_DATA

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

在套接字接收到数据后调度。socketData 类型的事件不使用 ProgressEvent.bytesTotal 属性。

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

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在处理此事件的对象。
bytesLoaded 在侦听器处理事件时加载的项数或字节数。
bytesTotal 0;socketData 事件对象不使用此属性。
target 报告进度的 Socket 对象。
示例 如何使用示例
SocketExample.as

下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:
  1. 该构造函数创建名为 socketCustomSocket 实例,并将主机名 localhost 和端口 80 作为参数传递。 由于 CustomSocket 扩展了 Socket,因此在调用 super() 时将调用 Socket 的构造函数。
  2. 然后,该示例调用了 configureListeners() 方法,该方法可为 Socket 事件添加侦听器。
  3. 最后,调用套接字 connect() 方法,其中使用 localhost 作为主机名并使用 80 作为端口号。

注意:若要运行该示例,您需要一台与 SWF 位于同一个域(在本例中为 localhost)服务器并侦听端口 80。

package {
    import flash.display.Sprite;

    public class SocketExample extends Sprite {

        public function SocketExample() {
            var socket:CustomSocket = new CustomSocket("localhost", 80);
        }
    }
}

import flash.errors.*;
import flash.events.*;
import flash.net.Socket;

class CustomSocket extends Socket {
    private var response:String;

    public function CustomSocket(host:String = null, port:uint = 0) {
        super();
        configureListeners();
        if (host && port)  {
            super.connect(host, port);
        }
    }

    private function configureListeners():void {
        addEventListener(Event.CLOSE, closeHandler);
        addEventListener(Event.CONNECT, connectHandler);
        addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
    }

    private function writeln(str:String):void {
        str += "\n";
        try {
            writeUTFBytes(str);
        }
        catch(e:IOError) {
            trace(e);
        }
    }

    private function sendRequest():void {
        trace("sendRequest");
        response = "";
        writeln("GET /");
        flush();
    }

    private function readResponse():void {
        var str:String = readUTFBytes(bytesAvailable);
        response += str;
    }

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

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

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

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

    private function socketDataHandler(event:ProgressEvent):void {
        trace("socketDataHandler: " + event);
        readResponse();
    }
}