[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 }
相關文章
相關標籤/搜索