转自http://520pig.blogbus.com/logs/32821429.html
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()无返回参数,readUTFBytes( )返回utf8数据。Socket对象接收的数据都是ASCII编码的文本,我们可以用readUTFBytes( )方法重新构造字符串,
readUTFBytes( )方法需要知道有多少个字节需要转换,用bytesAvailable属性指定字节数:
var string:String = socket.readUTFBytes(socket.bytesAvailable);
以上提到的是采用二进制的socket传输方式,如果采用xml的方式,那么触发的事件类型不同,它触发的是DataEvent.DATA事件,事件的data属性中包含传递来的数据,如果我们要读取xml就必须先将data中的字符串转换为xml格式,然后进行读取。
分享到:
相关推荐
Flash AS3.0 Socket 编程 Flash AS3.0 中的 Socket 编程是使用 ActionScript 3.0 进行网络编程的一种方式。它允许 Flash 应用程序与服务器之间建立连接,以便进行数据交换。下面是关于 Flash AS3.0 Socket 编程的...
资源名称:flash as3.0 socket编程 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
一段as3.0写的客户端代码,用来监听服务器端和发送数据用的一个例子。可作参考。socket通信
C# 3.0 socket通讯程序有服务器端和客户端2个程序例子,非常实用
1.与Socket服务器建立连接. 2.向Socket服务器发送数据. 3.从Socket服务器读数据. 4.同Socket服务器进行握手,并确定收到了什么样的数据和如何处理这些数据. 5.与Socket服务器断开,或者当服务器想与你断开的时候发消息...
实例源码 AS3 ActionScript 3.0 Socket 源码
AS3.0_Socket编程[归类].pdf
AS3 implementation of a client library of the WebSocket protocol,as3.0 websocket 封装了 socket,可以测试,很好用
USB 3.0 Socket to TOBY-L Adapter board for YRU baord router (MT7621AT)
socket通信基础socket通信基础
flash actionscript3 as3通信 教程 socket与服务器通信, 多个swf之间通信.zip
NULL 博文链接:https://as3.iteye.com/blog/938093
Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信
USB3.0 端子母座 PCB封装,AD格式,含3D封装
android3.0socket通讯实现代码.pdf
异步Socket通信经典案例教程
android3.0socket通讯实现代码[定义].pdf
windows下socket通信代码,带注释,适合初学者;包含客户端和服务器两个文件
socket通信库,c++编写,只需调用几个函数即可完成socket通信过程。简单易用,C#等其他语言可调用.问题沟通可发送邮件至gaocongly@126.com