Socket 套接字连接允许Flash播放器通过指定的端口与服务器通信,但是socket通讯在数据传输完毕后仍然不会关闭,要人为的关闭。我们可以使用flash.net.XMLSocket类创建XML数据格式的socket连接,使用flash.net.Socket类创建二进制数据格式socket连接,相比xml数据格式,二进制链接更低级,但是它可以连接到几乎所有的socket服务器端程序。as3.0 中的提供的socket链接都是异步的,也就是说你必须增加事件侦听在传输完数据以后才可以获得
要建立socket通讯,首先要建立socket连接,我们可以使用Socket.connect( )或XMLSocket.connect( )方法建立连接并监听connect事件确定连接是否建立。连接只需要2个参数,IP,和端口。
注意条件:
swf 和主机必须在同一个域;
网络上的swf不能连接本地服务器;
本地的swf 不能访问任何网络资源;
要允许域名交叉访问或连接低于1024的端口,需要提供cross-domain 策略文件。
如果要不同域中的flash相互访问可以通过flash.system.Security.loadPolicyFile( )读取:
Security.loadPolicyFile("cross-domain");
cross-domain策略文件例子:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domainpolicy.
dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80,110" />
</cross-domain-policy>
建立完连接后就可以对服务器进行写入,通过调用write方法,可以写把数据写入缓冲池中,然后在调用flush()方法就可以把数据发送出去,这里是针对二进制的socket,如果是xml请调用send()方法。as3.0可以通过对不同的参数定义不同的写入函数:是writeBoolean( ), writeByte( ), writeBytes( ),
writeDouble( ), writeFloat( ), writeInt( ), writeMultiByte( ), writeObject( ), writeShort( ), write-
UnsignedInt( ), writeUTF( ), 和writeUTFBytes( ) 。根据函数名就可以知道需要传入的参数,这里就对socket.writeBytes(byteArray, 0, byteArray.length);进行说明,因为它可以传递一个数据 ,并制定数组的开始和结束位置进行写入。,writeUTFBytes( ):写入字节型的字符串,writeUTF:数字型的字符串。writeMultiByte()以指定编码写入字符串,socket.writeMultiByte("example", "unicode");
发送完数据后就要接受数据,因此我们可以通过ProgressEvent.SOCKET_DATA事件处理函数中读取数据,利用readBoolean():Boolean,readByte():int,readDouble():Number,readFloat():Number,readInt():int,readObject():*,readShort():int,readUnsignedByte():uint,readUnsignedInt():uint,readUnsignedShort():uint,readUTF():String,readBytes()无(本内容来自唯才教育网http://www.hn1c.com 原文地址:http://hao.cspengbo.com/diannao/dn138354/)