[ActionScript 3.0] AS3 socket示例(官方示例)

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

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

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

 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 += "\n";
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 }
相关文章
相关标签/搜索