zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] AS3 socket示例(官方示例)

    下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:

    1. 该构造函数创建名为 socketCustomSocket 实例,并将主机名 localhost 和端口 80 作为参数传递。 由于 CustomSocket 扩展了 Socket,因此在调用 super() 时将调用 Socket 的构造函数。
    2. 然后,该示例调用了 configureListeners() 方法,该方法可为 Socket 事件添加侦听器。
    3. 最后,调用套接字 connect() 方法,其中使用 localhost 作为主机名并使用 80 作为端口号。

    注意:若要运行该示例,您需要一台与 SWF 位于同一个域(在本例中为 localhost)服务器并侦听端口 80。

     1 package
     2 {
     3     import flash.display.Sprite;
     4     
     5     /**
     6      * @author Frost.Yen
     7      * @E-mail 871979853@qq.com
     8      * @create 2015-8-21 下午2:53:03
     9      *
    10      */
    11     public class SocketExample extends Sprite
    12     {
    13         public function SocketExample()
    14         {
    15             var socket:CustomSocket = new CustomSocket("localhost", 80);
    16 
    17         }
    18     }
    19 }
    20 import flash.errors.*;
    21 import flash.events.*;
    22 import flash.net.Socket;
    23 
    24 class CustomSocket extends Socket {
    25     private var response:String;
    26     
    27     public function CustomSocket(host:String = null, port:uint = 0) {
    28         super();
    29         configureListeners();
    30         if (host && port)  {
    31             super.connect(host, port);
    32         }
    33     }
    34     
    35     private function configureListeners():void {
    36         addEventListener(Event.CLOSE, closeHandler);
    37         addEventListener(Event.CONNECT, connectHandler);
    38         addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    39         addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    40         addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
    41     }
    42     
    43     private function writeln(str:String):void {
    44         str += "
    ";
    45         try {
    46             writeUTFBytes(str);
    47         }
    48         catch(e:IOError) {
    49             trace(e);
    50         }
    51     }
    52     
    53     private function sendRequest():void {
    54         trace("sendRequest");
    55         response = "";
    56         writeln("GET /");
    57         flush();
    58     }
    59     
    60     private function readResponse():void {
    61         var str:String = readUTFBytes(bytesAvailable);
    62         response += str;
    63     }
    64     
    65     private function closeHandler(event:Event):void {
    66         trace("closeHandler: " + event);
    67         trace(response.toString());
    68     }
    69     
    70     private function connectHandler(event:Event):void {
    71         trace("connectHandler: " + event);
    72         sendRequest();
    73     }
    74     
    75     private function ioErrorHandler(event:IOErrorEvent):void {
    76         trace("ioErrorHandler: " + event);
    77     }
    78     
    79     private function securityErrorHandler(event:SecurityErrorEvent):void {
    80         trace("securityErrorHandler: " + event);
    81     }
    82     
    83     private function socketDataHandler(event:ProgressEvent):void {
    84         trace("socketDataHandler: " + event);
    85         readResponse();
    86     }
    87 }
  • 相关阅读:
    Eclipse 不能build, pom文件上面有叉叉 解决办法
    WCF分布式开发必备知识(1):MSMQ消息队列
    MSMQ创建消息队列出现“工作组安装计算机不支持该操作”
    在asp.net利用jquery.MultiFile实现多文件上传(转载)
    让ASP.NET MVC不使用jsonp也可以跨域访问
    设计模式学习之适配器模式(Adapter,结构型模式)(14)
    设计模式学习之策略模式(Strategy,行为型模式)(13)
    设计模式学习之命令模式(Command,行为型模式)(12)
    设计模式学习之代理模式(Proxy,结构型模式)(11)
    设计模式学习之组合模式(Composite,结构型模式)(10)
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4747943.html
Copyright © 2011-2022 走看看