AS3 Socket编程

在AS3中,有两种方法供我们实现和服务器的连接,先就自己的理解简单介绍实现方式,希望对大家有所帮助。

这两种方式是:

1. 运用Socket进行连接    

2.运用XMLSocket进行连接

【不论使用哪一种方式进行连接,都需要先明确目标主机的主机名/IP地址,需要连接的端口。两种方法都使用connect(host,port)方法进行连接。】

1.运用Socket进行连接

var socket:Socket=new Socket();//实例化socket对象;
socket.addEventListener(Event.CONNETCT,onConnect);//异步通信,监听连接及相关状态
socket.connect(host,port);//连接目标主机,指定了连接的端口

 private function onConnect(event:Event):void{
/*TO_DO*/
}</pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>


如果符合FlashPlayer的安全沙箱规则,那我们就建立了和服务器的连接,之后我们就可以与服务器进行数据的通信了。

 

- 发送数据

        对于Socket对象,利用writeXXX()方法将数据写入缓存区,再使用flush()方法发送数据。   
        写入数据的方法:

writeBoolean();writeDouble();writeInt();writeByte();writeFloat();writeMultiByte();
writeBytes();writeObject();writeShort();writeUTF();writeUTFBytes();writeUnsignedInt(); 

    //写入数据             
    socket.writeByte(1); 
    socket.writeByte(3);

    //发送数据,清空缓存 
    socket.flush();

- 接收数据

    Socket可通过监听其ProgressEvent.SOCKET_DATA事件来处理进一步获取数据。 
    ProgressEvent.SOCKET_DATA事件在套接字接收到数据是调度,socketData类型的事件不使用ProgressEvent.bytesLoaded属性

    var xmlSocket:XMLSocket=new XMLSocket();//实例化对象; 
    xmlSocket.addEventListener(ProgressEvent.SOCKET_DATA,onDataRec);//建立侦听

    private function onDataRec(event:ProgressEvent):void{ 
        while(xmlSocket.bytesAvailable){ 
        var data:int=xmlSocket.readByte();//读取数据trace(data); 
            } 
    } 

     private function onConnect(event:Event):void{ 
    /*TO_DO*/ 
    }  
//bytesAvailable属性只是当前socket对象中是否还有可读取的数据。

读取数据的方法与写入数据的方法类似,只是writeXXX()变为了readXXX();在此就不一一列出了。

 


2.利用XMLSocket建立通信

    var xmlSocket:XMLSocket=new XMLSocket(); 
    xmlSocket.addEventListener(Event.CONNECT,handler);//监听状态 
    xmlSocket.connect(host,port);//请求建立连接


- 发送数据
    先用writeXXX()方法写入数据至缓存区,在用send()方法发送数据;

写入数据的方法与socket对象的方法一致;

    xmlSocket.writeByte(2);//写入数据 
    xmlSocket.send();//发送数据

- 接收数据

    XMLSocket通过 在data事件处理函数中读取数据。
        DataEvent.DATA事件在发送或接受原始数据后调用。

  var xmlSocket:XMLSocket=new XMLSocket(); 
    xmlSocket.addEventListener(DataEvent.DATA,onDataRec); 
    xmlSocket.connect(host,port); 

    private function onDataRec(event:DataEvent):void{      
        var data:String=event.data; 
        trace(data); 
        //或者是转化为XML对象 
        var data:XML=(XML)event.data;    
    }

读取数据的方法与写入数据的方法类似,只是writeXXX()变为了readXXX();在此就不一一列出了。

你可能感兴趣的:(AS3 Socket编程)