[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 }
原文地址:https://www.cnblogs.com/frost-yen/p/4747943.html