| window.runtime 属性 | window.runtime.flash.net.Socket |
| 继承 | Socket EventDispatcher Object |
Socket 类与使用二进制协议的服务器一起使用时非常有用。
当在应用程序安全沙箱以外的安全沙箱的内容中使用此方法时,请考虑 Flash Player AIR 安全模型:
但在 Adobe AIR 中,application 安全沙箱中的内容(使用 AIR 应用程序安装的内容)不受这些安全限制的约束。
有关详细信息,请参阅以下部分:
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
| bytesAvailable : uint [只读 (read-only)]
输入缓冲区中可读取的数据的字节数。 | Socket | ||
| connected : Boolean [只读 (read-only)]
指示此 Socket 对象目前是否已连接。 | Socket | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| endian : String
指示数据的字节顺序;可能的值为来自 flash.utils.Endian 类的常量、Endian.BIG_ENDIAN 或 Endian.LITTLE_ENDIAN。 | Socket | ||
| objectEncoding : uint
在写入或读取对象时,控制所使用的 AMF 的版本。 | Socket | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| 方法 | 定义方 | ||
|---|---|---|---|
Socket(host:String = null, port:int = 0)
创建一个 Socket 对象。 | Socket | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | |
关闭套接字。 | Socket | ||
将套接字连接到指定的主机和端口。 | Socket | ||
![]() | dispatchEvent(event:Event):Boolean
将事件调度到事件流中。 | EventDispatcher | |
对套接字输出缓冲区中积累的所有数据进行刷新。 | Socket | ||
![]() | hasEventListener(type:String):Boolean
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | |
![]() | hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 | Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 | Object | |
readBoolean():Boolean
从套接字读取一个布尔值。 | Socket | ||
readByte():int
从套接字读取一个带符号字节。 | Socket | ||
从套接字读取 length 参数所指定的数据的字节数。 | Socket | ||
readDouble():Number
从套接字读取一个 IEEE 754 双精度浮点数。 | Socket | ||
readFloat():Number
从套接字读取一个 IEEE 754 单精度浮点数。 | Socket | ||
readInt():int
从套接字读取一个带符号的 32 位整数。 | Socket | ||
readMultiByte(length:uint, charSet:String):String
使用指定的字符集,从该字节流读取一个多字节字符串。 | Socket | ||
readObject():*
从以 AMF 序列化格式编码的套接字读取一个对象。 | Socket | ||
readShort():int
从套接字读取一个带符号的 16 位整数。 | Socket | ||
readUnsignedByte():uint
从套接字读取一个无符号字节。 | Socket | ||
readUnsignedInt():uint
从套接字读取一个无符号的 32 位整数。 | Socket | ||
readUnsignedShort():uint
从套接字读取一个无符号的 16 位整数。 | Socket | ||
readUTF():String
从套接字读取一个 UTF-8 字符串。 | Socket | ||
readUTFBytes(length:uint):String
从套接字读取 length 参数所指定的 UTF-8 数据的字节数,并返回一个字符串。 | Socket | ||
![]() | removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | |
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 | Object | |
![]() | toString():String
返回指定对象的字符串表示形式。 | Object | |
![]() | valueOf():Object
返回指定对象的原始值。 | Object | |
![]() | willTrigger(type:String):Boolean
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher | |
writeBoolean(value:Boolean):void
将一个布尔值写入套接字。 | Socket | ||
将一个字节写入套接字。 | Socket | ||
从指定的字节数组写入一系列字节。 | Socket | ||
writeDouble(value:Number):void
将一个 IEEE 754 双精度浮点数写入套接字。 | Socket | ||
writeFloat(value:Number):void
将一个 IEEE 754 单精度浮点数写入套接字。 | Socket | ||
将一个带符号的 32 位整数写入套接字。 | Socket | ||
writeMultiByte(value:String, charSet:String):void
使用指定的字符集,从该字节流写入一个多字节字符串。 | Socket | ||
以 AMF 序列化格式将一个对象写入套接字。 | Socket | ||
writeShort(value:int):void
将一个 16 位整数写入套接字。 | Socket | ||
writeUnsignedInt(value:uint):void
将一个无符号的 32 位整数写入套接字。 | Socket | ||
将以下数据写入套接字:一个无符号 16 位整数,它指示了指定 UTF-8 字符串的长度(以字节为单位),后面跟随字符串本身。 | Socket | ||
writeUTFBytes(value:String):void
将一个 UTF-8 字符串写入套接字。 | Socket | ||
| 事件 | 摘要 | 定义方 | ||
|---|---|---|---|---|
![]() | Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时调度。 | EventDispatcher | ||
| 在服务器关闭套接字连接时调度。 | Socket | |||
| 在建立网络连接后调度。 | Socket | |||
![]() | Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时调度。 | EventDispatcher | ||
| 在出现输入/输出错误并导致发送或加载操作失败时调度。 | Socket | |||
| 若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 的端口,则进行调度。 | Socket | |||
| 在套接字接收到数据后调度。 | Socket | |||
| bytesAvailable | 属性 |
bytesAvailable:uint [只读 (read-only)] 输入缓冲区中可读取的数据的字节数。
代码必须访问 bytesAvailable 以确保在尝试使用其中一种 read 方法读取数据之前,有足够的数据可用。
| connected | 属性 |
connected:Boolean [只读 (read-only)]
指示此 Socket 对象目前是否已连接。如果该套接字当前已连接,则对此属性的调用将返回值 true,否则将返回 false。
| endian | 属性 |
endian:String [读写]
指示数据的字节顺序;可能的值为来自 flash.utils.Endian 类的常量,Endian.BIG_ENDIAN 或 Endian.LITTLE_ENDIAN。
默认值为 Endian.BIG_ENDIAN
另请参见
| objectEncoding | 属性 |
objectEncoding:uint [读写] 在写入或读取对象时,控制所使用的 AMF 的版本。
另请参见
| Socket | () | 构造函数 |
function Socket(host:String = null, port:int = 0)创建一个 Socket 对象。 若未指定参数,将创建一个最初处于断开状态的套接字。 若指定了参数,则尝试连接到指定的主机和端口。
参数host:String (default = null) — 要连接的主机的名称。 若未指定此参数,将创建一个最初处于断开状态的套接字。
| |
port:int (default = 0) — 要连接的端口号。 若未指定此参数,将创建一个最初处于断开状态的套接字。
|
connect: — 在建立网络连接后调度。 | |
ioError: — 在出现输入/输出错误并由此导致连接失败时调度。 | |
securityError: — 此错误出现在 SWF 内容中。 当对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或 1024 以下的端口时调度。您可以通过在服务器上使用跨域策略文件来解决上述问题。 (此限制不适用于应用程序安全沙箱中运行的 AIR 内容。)有关套接字的策略文件的详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。 |
SecurityError — 此错误出现在 SWF 内容中。 原因如下:
|
| close | () | 方法 |
function close():void
关闭套接字。在调用 close() 方法之后,将无法读取或写入任何数据。
仅在服务器关闭连接时调度 close 事件;在调用 close() 方法时不调度该事件。
可通过再次对 Socket 对象调用 connect() 方法来重复使用该对象。
IOError — 无法关闭套接字,或者套接字未打开。
|
| connect | () | 方法 |
function connect(host:String, port:int):void将套接字连接到指定的主机和端口。如果连接立即失败,则调度一个事件或引发一个异常。如果指定了主机,则调度一个错误事件;如果未指定主机,则引发异常。另外,连接的状态由事件来报告。如果已连接上套接字,则现有的连接将首先关闭。
默认情况下,为 host 传递的值必须在同一个域中且为 port 传递的值必须为 1024 或更高的值。例如,位于 adobe.com 的 SWF 文件只能连接到运行于 adobe.com 的服务器守护程序。如果想要连接到与提供连接 SWF 文件的主机不同的另一个主机上的套接字,或者想要连接到任意主机上低于 1024 的端口,则必须从要连接的主机中获取 xmlsocket: 策略文件。不过,这些限制不适用于应用程序安全沙箱中的 AIR 内容。有关详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。
参数
host:String — 要连接的主机的名称。 如果未指定主机,则要连接的主机为执行调用的 文件所在的主机。 如果不指定主机,请使用事件侦听器来确定连接是否成功。
| |
port:int — 要连接的端口号。
|
connect: — 在建立网络连接后调度。 | |
ioError: — 在指定了主机但出现输入/输出错误并由此导致连接失败时调度。 | |
securityError: — 若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或 1024 以下的端口,则进行调度。 (此限制不适用于应用程序安全沙箱中运行的 AIR 内容。)您可以通过在服务器上使用跨域策略文件来解决上述问题。 有关详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。 |
IOError — 未指定任何主机,而且连接失败。
| |
SecurityError — 此错误出现在 SWF 内容中。 原因如下:
|
另请参见
| flush | () | 方法 |
function flush():void
对套接字输出缓冲区中积累的所有数据进行刷新。write 方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readBoolean | () | 方法 |
function readBoolean():Boolean
从套接字读取一个布尔值。在读取一个字节之后,如果该字节不为零,则该方法返回 true,否则返回 false。
Boolean — 如果所读取的字节不为零,则值为 true,否则为 false。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readByte | () | 方法 |
function readByte():int从套接字读取一个带符号字节。
返回int — 从 -128 至 127 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readBytes | () | 方法 |
function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从套接字读取 length 参数所指定的数据的字节数。从 offset 所指示的位置开始,将这些字节读入指定的字节数组。
参数
bytes:ByteArray — 要将数据读入的 ByteArray 对象。
| |
offset:uint (default = 0) — 数据读取的偏移量应从该字节数组中开始。
| |
length:uint (default = 0) — 要读取的字节数。默认值 0 导致读取所有可用的数据。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readDouble | () | 方法 |
function readDouble():Number从套接字读取一个 IEEE 754 双精度浮点数。
返回Number — 一个 IEEE 754 双精度浮点数。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readFloat | () | 方法 |
function readFloat():Number从套接字读取一个 IEEE 754 单精度浮点数。
返回Number — 一个 IEEE 754 单精度浮点数。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readInt | () | 方法 |
function readInt():int从套接字读取一个带符号的 32 位整数。
返回int — 从 -2147483648 至 2147483647 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readMultiByte | () | 方法 |
function readMultiByte(length:uint, charSet:String):String使用指定的字符集,从该字节流读取一个多字节字符串。
参数
length:uint — 要从字节流中读取的字节数。
| |
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift_jis"、"CN-GB" 和 "iso-8859-1"。有关完整列表,请参阅Supported Character 。
注意:如果当前系统无法识别 |
String — UTF-8 编码的字符串。
|
EOFError — 可读取的数据不足。
|
| readObject | () | 方法 |
function readObject():*从以 AMF 序列化格式编码的套接字读取一个对象。
返回* — 反序列化的对象
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| readShort | () | 方法 |
function readShort():int从套接字读取一个带符号的 16 位整数。
返回int — 从 -32768 至 32767 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readUnsignedByte | () | 方法 |
function readUnsignedByte():uint从套接字读取一个无符号字节。
返回uint — 从 0 至 255 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readUnsignedInt | () | 方法 |
function readUnsignedInt():uint从套接字读取一个无符号的 32 位整数。
返回uint — 从 0 至 4294967295 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readUnsignedShort | () | 方法 |
function readUnsignedShort():uint从套接字读取一个无符号的 16 位整数。
返回uint — 从 0 至 65535 的值。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readUTF | () | 方法 |
function readUTF():String从套接字读取一个 UTF-8 字符串。假定该字符串的前缀是指示字符串长度(以字节为单位)的无符号短整数。
返回String — UTF-8 字符串。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| readUTFBytes | () | 方法 |
function readUTFBytes(length:uint):String
从套接字读取 length 参数所指定的 UTF-8 数据的字节数,并返回一个字符串。
参数
length:uint — 要读取的字节数。
|
String — UTF-8 字符串。
|
EOFError — 可读取的数据不足。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
| writeBoolean | () | 方法 |
function writeBoolean(value:Boolean):void
将一个布尔值写入套接字。此方法写入了一个字节,其值为 1 (true ) 或 0 ( false)。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:Boolean — 要写入套接字的值:1 (true ) 或 0 ( false)。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeByte | () | 方法 |
function writeByte(value:int):void将一个字节写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:int — 要写入套接字的值。使用了该值的低 8 位;忽略了高 24 位。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeBytes | () | 方法 |
function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从指定的字节数组写入一系列字节。写入操作从 offset 指定的位置开始。
如果省略了 length 参数,则默认长度 0 将导致该方法从 offset 开始写入整个缓冲区。
如果还省略了 offset 参数,则写入整个缓冲区。
如果 offset 或 length 超出了范围,则调整它们以匹配 bytes 数组的开头和结尾。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
bytes:ByteArray — 要从中读取数据的 ByteArray 对象。
| |
offset:uint (default = 0) — bytes ByteArray 对象中从零开始的偏移量,应由此开始执行数据写入。
| |
length:uint (default = 0) — 要写入的字节数。默认值 0 导致从 offset 参数指定的值开始写入整个缓冲区。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeDouble | () | 方法 |
function writeDouble(value:Number):void将一个 IEEE 754 双精度浮点数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:Number — 要写入套接字的值。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeFloat | () | 方法 |
function writeFloat(value:Number):void将一个 IEEE 754 单精度浮点数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:Number — 要写入套接字的值。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeInt | () | 方法 |
function writeInt(value:int):void将一个带符号的 32 位整数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:int — 要写入套接字的值。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeMultiByte | () | 方法 |
function writeMultiByte(value:String, charSet:String):void使用指定的字符集,从该字节流写入一个多字节字符串。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:String — 要写入的字符串值。
| |
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift_jis"、"CN-GB" 和 "iso-8859-1"。有关完整列表,请参阅Supported Character 。
|
另请参见
| writeObject | () | 方法 |
function writeObject(object:*):void以 AMF 序列化格式将一个对象写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
object:* — 要进行序列化处理的对象。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeShort | () | 方法 |
function writeShort(value:int):void将一个 16 位整数写入套接字。写入的字节如下:
(v >> 8) & 0xff v & 0xff
使用了该参数的低 16 位;忽略了高 16 位。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:int — 要写入套接字的值。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeUnsignedInt | () | 方法 |
function writeUnsignedInt(value:uint):void将一个无符号的 32 位整数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:uint — 要写入套接字的值。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeUTF | () | 方法 |
function writeUTF(value:String):void将以下数据写入套接字:一个无符号 16 位整数,它指示了指定 UTF-8 字符串的长度(以字节为单位),后面跟随字符串本身。
写入字符串之前,该方法会计算表示该字符串的所有字符所需的字节数。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:String — 要写入套接字的字符串。
|
RangeError — 长度大于 65535。
| |
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| writeUTFBytes | () | 方法 |
function writeUTFBytes(value:String):void将一个 UTF-8 字符串写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush() 方法之前一直被保存在队列中。
参数
value:String — 要写入套接字的字符串。
|
IOError — 套接字上发生 I/O 错误,或者套接字未打开。
|
另请参见
| close | 事件 |
flash.events.Eventflash.events.Event.CLOSE
在服务器关闭套接字连接时调度。仅在服务器关闭连接时调度 close 事件;在调用 Socket.close() 方法时不调度该事件。
Event.CLOSE 常量定义 close 事件对象的 type 属性的值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已关闭其连接的对象。 |
| connect | 事件 |
flash.events.Eventflash.events.Event.CONNECT在建立网络连接后调度。
Event.CONNECT 常量定义 connect 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已建立网络连接的 Socket 或 XMLSocket 对象。 |
| ioError | 事件 |
flash.events.IOErrorEventflash.events.IOErrorEvent.IO_ERROR在出现输入/输出错误并导致发送或加载操作失败时调度。
定义ioError 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
errorID | 与特定错误关联的引用数字。 |
target | 发生输入/输出错误的网络对象。 |
text | 要显示为错误消息的文本。 |
| securityError | 事件 |
flash.events.SecurityErrorEventflash.events.SecurityErrorEvent.SECURITY_ERROR
若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 端口,则进行调度。
SecurityErrorEvent.SECURITY_ERROR 常量定义 securityError 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 报告安全错误的网络对象。 |
text | 要显示为错误消息的文本。 |
另请参见
| socketData | 事件 |
flash.events.ProgressEventflash.events.ProgressEvent.SOCKET_DATA
在套接字接收到数据后调度。socketData 类型的事件不使用 ProgressEvent.bytesTotal 属性。
socketData 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
currentTarget | 当前正在处理此事件的对象。 |
bytesLoaded | 在侦听器处理事件时加载的项数或字节数。 |
bytesTotal | 0;socketData 事件对象不使用此属性。 |
target | 报告进度的 Socket 对象。 |
注意:要测试此示例,请执行以下操作:
Socket() 构造函数指向有效的 URL 和端口。
<html>
<head>
<script src="AIRAliases.js" />
<script>
var socket;
var response;
function init() {
socket = new air.Socket("localhost", 80);
socket.addEventListener(air.Event.CLOSE, closeHandler);
socket.addEventListener(air.Event.CONNECT, connectHandler);
socket.addEventListener(air.IOErrorEvent.IO_ERROR, ioErrorHandler);
socket.addEventListener(air.SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
socket.addEventListener(air.ProgressEvent.SOCKET_DATA, socketDataHandler);
}
function writeln(str) {
str += "\n";
try {
socket.writeUTFBytes(str);
}
catch(e) {
air.trace(e);
}
}
function sendRequest() {
air.trace("sendRequest");
response = "";
writeln("GET /");
socket.flush();
}
function readResponse() {
var str = socket.readUTFBytes(socket.bytesAvailable);
response += str;
}
function closeHandler(event) {
air.trace("closeHandler: " + event);
air.trace(response.toString());
}
function connectHandler(event) {
air.trace("connectHandler: " + event);
sendRequest();
}
function ioErrorHandler(event) {
air.trace("ioErrorHandler: " + event);
}
function securityErrorHandler(event) {
air.trace("securityErrorHandler: " + event);
}
function socketDataHandler(event) {
air.trace("socketDataHandler: " + event);
readResponse();
}
</script>
</head>
<body onload='init()'>
</body>
</html>