Player 版本 : | Flash Player 9 |
Socket 类使 ActionScript 代码可以建立套接字连接并读取和写入原始二进制数据。 它与 XMLSocket 类似,但没有指定接收或传输的数据格式。
Socket 类与使用二进制协议的服务器一起使用时非常有用。
使用此类时,请考虑 Flash Player 安全模型:
- 如果执行调用的 SWF 文件在只能与本地文件系统内容交互的沙箱中,而目标资源来自网络沙箱,则不允许进行数据加载。
- 如果执行调用的 SWF 文件来自网络沙箱而目标资源在本地,也不允许进行数据加载。
- 进行调用的 SWF 文件和被访问的网络资源必须在同一个域里。 例如,adobe.com 处的 SWF 文件只能连接到 adobe.com 处的服务器守护程序。
- 网站可通过跨域策略文件允许对资源进行跨域访问。
有关详细信息,请参阅以下部分:
查看示例
bytesAvailable:uint
[read-only]
Player 版本 : | Flash Player 9 |
输入缓冲区中可读取的数据的字节数。
代码必须访问 bytesAvailable
以确保在尝试使用其中一种 read
方法读取数据之前,有足够的数据可用。
实现
public function get bytesAvailable():uint
connected:Boolean
[read-only]
Player 版本 : | Flash Player 9 |
指示此 Socket 对象目前是否已连接。 如果该套接字当前已连接,则对此属性的调用将返回值 true
,否则将返回 false
。
实现
public function get connected():Boolean
endian:String
[read-write]
Player 版本 : | Flash Player 9 |
指示数据的字节顺序;可能的值为来自 flash.utils.Endian 类的常量,Endian.BIG_ENDIAN
或 Endian.LITTLE_ENDIAN
。
默认值为 Endian.BIG_ENDIAN
.
实现
public function get endian():String
public function set endian(value:String):void
另请参见
objectEncoding:uint
[read-write]
Player 版本 : | Flash Player 9 |
在写入或读取对象时,控制所使用的 AMF 的版本。
实现
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
另请参见
public function Socket(host:String = null, port:int = 0)
Player 版本 : | Flash Player 9 |
创建一个 Socket 对象。 若未指定参数,将创建一个最初处于断开状态的套接字。 若指定了参数,则尝试连接到指定的主机和端口。
参数
| host:String (default = null ) — 要连接的主机的名称。 若未指定此参数,将创建一个最初处于断开状态的套接字。
|
|
| port:int (default = 0 ) — 要连接的端口号。 若未指定此参数,将创建一个最初处于断开状态的套接字。
|
事件
| connect:Event — 在建立网络连接后调度。 |
|
| ioError:IOErrorEvent — 在出现输入/输出错误并由此导致连接失败时调度。 |
|
| securityError:SecurityErrorEvent — 若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或 1024 以下的端口,则进行调度。 您可以通过在服务器上使用跨域策略文件来解决上述问题。 有关套接字的策略文件的详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。 |
引发
| SecurityError — 发生此错误有以下几种原因:
- 本地不受信任的 SWF 文件无法与 Internet 通信。 您可以通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来解决此问题。
- 您不能指定高于 65535 的套接字端口。
|
public function close():void
Player 版本 : | Flash Player 9 |
关闭套接字。 在调用 close()
方法之后,将无法读取或写入任何数据。
仅在服务器关闭连接时调度 close
事件;在调用 close()
方法时不调度该事件。
可通过再次对 Socket 对象调用 connect()
方法来重复使用该对象。
引发
public function connect(host:String, port:int):void
Player 版本 : | Flash Player 9 |
将套接字连接到指定的主机和端口。 如果连接立即失败,则调度一个事件或引发一个异常。如果指定了主机,则调度一个错误事件;如果未指定主机,则引发异常。 另外,连接的状态由事件来报告。 如果已连接上套接字,则现有的连接将首先关闭。
参数
| host:String — 要连接的主机的名称。 如果未指定主机,则要连接的主机为执行调用的 SWF 文件所在的主机。 如果不指定主机,请使用事件侦听器来确定连接是否成功。
|
|
| port:int — 要连接的端口号。
|
事件
| connect:Event — 在建立网络连接后调度。 |
|
| ioError:IOErrorEvent — 在指定了主机但出现输入/输出错误并由此导致连接失败时调度。 |
|
| securityError:SecurityErrorEvent — 若对 Socket.connect() 的调用尝试连接到调用方安全沙箱外部的服务器或 1024 以下的端口,则进行调度。 您可以通过在服务器上使用跨域策略文件来解决上述问题。 有关详细信息,请参阅《ActionScript 3.0 编程》中的“Flash Player 安全性”一章。 |
引发
| IOError — 未指定任何主机,而且连接失败。
|
|
| SecurityError — 发生此错误有以下几种原因:
- 本地不受信任的 SWF 文件可能无法与 Internet 进行通信。 您可以通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来解决此问题。
- 您不能指定高于 65535 的套接字端口。
- 在包含 SWF 内容 HTML 页中,
object 和 embed 标签的 allowNetworking 参数设置为 "none" 。
|
另请参见
public function flush():void
Player 版本 : | Flash Player 9 |
对套接字输出缓冲区中积累的所有数据进行刷新。 write
方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
引发
public function readBoolean():Boolean
Player 版本 : | Flash Player 9 |
从套接字读取一个布尔值。 在读取一个字节之后,如果该字节不为零,则该方法返回 true
,否则返回 false
。
返回
| Boolean — 如果所读取的字节不为零,则值为 true ,否则为 false 。
|
引发
public function readByte():int
Player 版本 : | Flash Player 9 |
从套接字读取一个带符号字节。
返回
引发
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Player 版本 : | Flash Player 9 |
从套接字读取 length
参数所指定的数据的字节数。 从 offset
所指示的位置开始,将这些字节读入指定的字节数组。
参数
| bytes:ByteArray — 要将数据读入的 ByteArray 对象。
|
|
| offset:uint (default = 0 ) — 数据读取的偏移量应从该字节数组中开始。
|
|
| length:uint (default = 0 ) — 要读取的字节数。 默认值 0 导致读取所有可用的数据。
|
引发
public function readDouble():Number
Player 版本 : | Flash Player 9 |
从套接字读取一个 IEEE 754 双精度浮点数。
返回
引发
public function readFloat():Number
Player 版本 : | Flash Player 9 |
从套接字读取一个 IEEE 754 单精度浮点数。
返回
引发
public function readInt():int
Player 版本 : | Flash Player 9 |
从套接字读取一个带符号的 32 位整数。
返回
| int — 从 -2147483648 至 2147483647 的值。
|
引发
public function readMultiByte(length:uint, charSet:String):String
Player 版本 : | Flash Player 9 |
使用指定的字符集,从该字节流读取一个多字节字符串。
参数
| length:uint — 要从字节流中读取的字节数。
|
|
| charSet:String — 表示用于解释字节的字符集的字符串。 可能的字符集字符串包括 "shift_jis" 、"CN-GB" 和 "iso-8859-1" 。 有关完整列表,请参阅Supported Character 。
注意:如果当前系统无法识别 charSet 参数的值,则 Flash Player 将采用系统的默认代码页作为字符集。 例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, "iso-8859-01") 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。 在另一台计算机上,Flash Player 将使用系统的默认代码页。
|
返回
引发
public function readObject():*
Player 版本 : | Flash Player 9 |
从以 AMF 序列化格式编码的套接字读取一个对象。
返回
引发
另请参见
public function readShort():int
Player 版本 : | Flash Player 9 |
从套接字读取一个带符号的 16 位整数。
返回
| int — 从 -32768 至 32767 的值。
|
引发
public function readUnsignedByte():uint
Player 版本 : | Flash Player 9 |
从套接字读取一个无符号字节。
返回
引发
public function readUnsignedInt():uint
Player 版本 : | Flash Player 9 |
从套接字读取一个无符号的 32 位整数。
返回
| uint — 从 0 至 4294967295 的值。
|
引发
public function readUnsignedShort():uint
Player 版本 : | Flash Player 9 |
从套接字读取一个无符号的 16 位整数。
返回
引发
public function readUTF():String
Player 版本 : | Flash Player 9 |
从套接字读取一个 UTF-8 字符串。 假定该字符串的前缀是指示字符串长度(以字节为单位)的无符号短整数。
返回
引发
public function readUTFBytes(length:uint):String
Player 版本 : | Flash Player 9 |
从套接字读取 length
参数所指定的 UTF-8 数据的字节数,并返回一个字符串。
参数
返回
引发
public function writeBoolean(value:Boolean):void
Player 版本 : | Flash Player 9 |
将一个布尔值写入套接字。 此方法写入了一个字节,其值为 1 (true
) 或 0 ( false
)。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
| value:Boolean — 要写入套接字的值:1 (true ) 或 0 ( false )。
|
引发
另请参见
public function writeByte(value:int):void
Player 版本 : | Flash Player 9 |
将一个字节写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
| value:int — 要写入套接字的值。 使用了该值的低 8 位;忽略了高 24 位。
|
引发
另请参见
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Player 版本 : | Flash Player 9 |
从指定的字节数组写入一系列字节。 写入操作从 offset
指定的位置开始。
如果省略了 length
参数,则默认长度 0 将导致该方法从 offset
开始写入整个缓冲区。
如果还省略了 offset
参数,则写入整个缓冲区。
如果 offset
或 length
超出了范围,则调整它们以匹配 bytes
数组的开头和结尾。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
| bytes:ByteArray — 要从中读取数据的 ByteArray 对象。
|
|
| offset:uint (default = 0 ) — bytes ByteArray 对象中从零开始的偏移量,应由此开始执行数据写入。
|
|
| length:uint (default = 0 ) — 要写入的字节数。 默认值 0 导致从 offset 参数指定的值开始写入整个缓冲区。
|
引发
另请参见
public function writeDouble(value:Number):void
Player 版本 : | Flash Player 9 |
将一个 IEEE 754 双精度浮点数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeFloat(value:Number):void
Player 版本 : | Flash Player 9 |
将一个 IEEE 754 单精度浮点数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeInt(value:int):void
Player 版本 : | Flash Player 9 |
将一个带符号的 32 位整数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeMultiByte(value:String, charSet:String):void
Player 版本 : | Flash Player 9 |
使用指定的字符集,从该字节流写入一个多字节字符串。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
另请参见
public function writeObject(object:*):void
Player 版本 : | Flash Player 9 |
以 AMF 序列化格式将一个对象写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeShort(value:int):void
Player 版本 : | Flash Player 9 |
将一个 16 位整数写入套接字。 写入的字节如下:
(v >> 8) & 0xff v & 0xff
使用了该参数的低 16 位;忽略了高 16 位。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeUnsignedInt(value:uint):void
Player 版本 : | Flash Player 9 |
将一个无符号的 32 位整数写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeUTF(value:String):void
Player 版本 : | Flash Player 9 |
将以下数据写入套接字:一个无符号 16 位整数,它指示了指定 UTF-8 字符串的长度(以字节为单位),后面跟随字符串本身。
写入字符串之前,该方法会计算表示该字符串的所有字符所需的字节数。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
public function writeUTFBytes(value:String):void
Player 版本 : | Flash Player 9 |
将一个 UTF-8 字符串写入套接字。
注意:此方法写入的数据不会被立即传送;这些数据在调用 flush()
方法之前一直被保存在队列中。
参数
引发
另请参见
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.CLOSE
Player 版本 : | Flash Player 9 |
在服务器关闭套接字连接时调度。 仅在服务器关闭连接时调度 close
事件;在调用 Socket.close()
方法时不调度该事件。
定义
close
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已关闭其连接的对象。 |
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.CONNECT
Player 版本 : | Flash Player 9 |
在建立网络连接后调度。
定义
connect
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已建立网络连接的 Socket 或 XMLSocket 对象。 |
事件对象类型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR
Player 版本 : | Flash Player 9 |
在出现输入/输出错误并导致发送或加载操作失败时调度。
定义
ioError
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 发生输入/输出错误的网络对象。 |
text | 要显示为错误消息的文本。 |
事件对象类型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR
Player 版本 : | Flash Player 9 |
若对 Socket.connect()
的调用尝试连接到调用方安全沙箱外部的服务器或端口号低于 1024 端口,则进行调度。
SecurityErrorEvent.SECURITY_ERROR
常量定义
securityError
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 报告安全错误的网络对象。 |
text | 要显示为错误消息的文本。 |
另请参见
事件对象类型: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.SOCKET_DATA
Player 版本 : | Flash Player 9 |
在套接字接收到数据后调度。 socketData
类型的事件不使用 ProgressEvent.bytesTotal
属性。
定义
socketData
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在处理此事件的对象。 |
bytesLoaded | 在侦听器处理事件时加载的项数或字节数。 |
bytesTotal | 0;socketData 事件对象不使用此属性。 |
target | 报告进度的 Socket 对象。 |
下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:
- 该构造函数创建名为
socket
的 CustomSocket
实例,并将主机名 localhost
和端口 80 作为参数传递。 由于 CustomSocket
扩展了 Socket,则对 super()
的调用将调用 Socket 的构造函数,将 localhost
作为主机名,80 作为端口号。 - 然后,该示例调用了
configureListeners()
方法,该方法可为 Socket 事件添加侦听器。
注意:若要运行该示例,您需要一台与 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(host, port);
configureListeners();
}
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();
}
}
© 2004-2007 Adobe Systems Incorporated. All rights reserved.
Wed Jun 13 2007, 3:54 AM GMT-07:00
当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/net/Socket.html