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