下例對套接字執行讀寫操做,並輸出在套接字事件期間傳輸的信息。 該示例的要點遵循:服務器
socket
的 CustomSocket
實例,並將主機名 localhost
和端口 80 做爲參數傳遞。 因爲 CustomSocket
擴展了 Socket,所以在調用 super()
時將調用 Socket 的構造函數。configureListeners()
方法,該方法可爲 Socket 事件添加偵聽器。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 }