下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:
- 该构造函数创建名为
socket
的CustomSocket
实例,并将主机名localhost
和端口 80 作为参数传递。 由于CustomSocket
扩展了 Socket,因此在调用super()
时将调用 Socket 的构造函数。 - 然后,该示例调用了
configureListeners()
方法,该方法可为 Socket 事件添加侦听器。 - 最后,调用套接字
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 }