zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] AS3 ServerSocket示例(官方示例)

    下面的示例创建一个套接字服务器。要使用该服务器,可将套接字绑定到本地端口,然后从其他应用程序连接到该端口。该服务器仅识别 UTF-8 字符串。

      1 package
      2 {
      3     import flash.display.Sprite;
      4     import flash.events.Event;
      5     import flash.events.MouseEvent;
      6     import flash.events.ProgressEvent;
      7     import flash.events.ServerSocketConnectEvent;
      8     import flash.net.ServerSocket;
      9     import flash.net.Socket;
     10     import flash.text.TextField;
     11     import flash.text.TextFieldType;
     12     import flash.utils.ByteArray;
     13 
     14     /**
     15      * @author Frost.Yen
     16      * @E-mail 871979853@qq.com
     17      * @create 2015-8-21 下午3:49:14
     18      *
     19      */
     20     public class ServerSocketExample extends Sprite
     21     {
     22         private var serverSocket:ServerSocket = new ServerSocket();
     23         private var clientSocket:Socket;
     24         
     25         private var localIP:TextField;
     26         private var localPort:TextField;
     27         private var logField:TextField;
     28         private var message:TextField;
     29 
     30         public function ServerSocketExample()
     31         {
     32             setupUI();
     33 
     34         }
     35         private function onConnect( event:ServerSocketConnectEvent ):void
     36         {
     37             clientSocket = event.socket;
     38             clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData );
     39             log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
     40         }
     41         
     42         private function onClientSocketData( event:ProgressEvent ):void
     43         {
     44             var buffer:ByteArray = new ByteArray();
     45             clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable );
     46             log( "Received: " + buffer.toString() );
     47         }
     48         
     49         private function bind( event:Event ):void
     50         {
     51             if( serverSocket.bound ) 
     52             {
     53                 serverSocket.close();
     54                 serverSocket = new ServerSocket();
     55                 
     56             }
     57             serverSocket.bind( parseInt( localPort.text ), localIP.text );
     58             serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect );
     59             serverSocket.listen();
     60             log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort );
     61         }
     62         
     63         private function send( event:Event ):void
     64         {
     65             try
     66             {
     67                 if( clientSocket != null && clientSocket.connected )
     68                 {
     69                     clientSocket.writeUTFBytes( message.text );
     70                     clientSocket.flush(); 
     71                     log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
     72                 }
     73                 else log("No socket connection.");
     74             }
     75             catch ( error:Error )
     76             {
     77                 log( error.message );
     78             }
     79         }
     80         
     81         private function log( text:String ):void
     82         {
     83             logField.appendText( text + "
    " );
     84             logField.scrollV = logField.maxScrollV;
     85             trace( text );
     86         }
     87         
     88         private function setupUI():void
     89         {
     90             localIP = createTextField( 10, 10, "Local IP", "0.0.0.0");
     91             localPort = createTextField( 10, 35, "Local port", "0" );
     92             createTextButton( 170, 60, "Bind", bind );
     93             message = createTextField( 10, 85, "Message", "Lucy can't drink milk." );
     94             createTextButton( 170, 110, "Send", send );
     95             logField = createTextField( 10, 135, "Log", "", false, 200 )
     96             
     97             this.stage.nativeWindow.activate();
     98         }
     99         
    100         private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField
    101         {
    102             var labelField:TextField = new TextField();
    103             labelField.text = label;
    104             labelField.type = TextFieldType.DYNAMIC;
    105             labelField.width = 100;
    106             labelField.x = x;
    107             labelField.y = y;
    108             
    109             var input:TextField = new TextField();
    110             input.text = defaultValue;
    111             input.type = TextFieldType.INPUT;
    112             input.border = editable;
    113             input.selectable = editable;
    114             input.width = 280;
    115             input.height = height;
    116             input.x = x + labelField.width;
    117             input.y = y;
    118             
    119             this.addChild( labelField );
    120             this.addChild( input );
    121             
    122             return input;
    123         }
    124         
    125         private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField
    126         {
    127             var button:TextField = new TextField();
    128             button.htmlText = "<u><b>" + label + "</b></u>";
    129             button.type = TextFieldType.DYNAMIC;
    130             button.selectable = false;
    131             button.width = 180;
    132             button.x = x;
    133             button.y = y;
    134             button.addEventListener( MouseEvent.CLICK, clickHandler );
    135             
    136             this.addChild( button );
    137             return button;
    138         }        
    139     }
    140 }
  • 相关阅读:
    vmware 虚拟机共享 windows 目录
    下载 golang.org/x 包出错不用代理的解决办法
    c++小游戏——彩票
    恶意代码要注意
    Pascal到c++,求大佬翻译!
    【CYH-01】小奔的国庆练习赛:赛后标程
    鸽巢原理及其扩展——Ramsey定理
    区块链,你知道多少?
    go语言
    10.2:异或树经验
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4748151.html
Copyright © 2011-2022 走看看