• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            教父的告白
            一切都是紙老虎
            posts - 82,  comments - 7,  trackbacks - 0
            前提:
            需要下載as3corelib來為ActionScript3處理JSON codec

            server.erl
            -module(server).   
            -export([start/0,start/1,process/1]).   
            -define(defPort, 8888).   
              
            start() 
            -> start(?defPort).   
              
            start(Port) 
            ->   
              
            case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of   
                {ok, LSock} 
            -> server_loop(LSock);   
                {error, Reason} 
            -> exit({Port,Reason})   
              end.   
              
            %% main server loop - wait for next connection, spawn child to process it   
            server_loop(LSock) 
            ->   
              
            case gen_tcp:accept(LSock) of   
                {ok, Sock} 
            ->   
                  spawn(
            ?MODULE,process,[Sock]),   
                  server_loop(LSock);   
                {error, Reason} 
            ->   
                  exit({accept,Reason})   
              end.   
              
            %% process current connection   
            process(Sock) 
            ->   
              Req 
            = do_recv(Sock),   
              io:format(
            "~p~n", [Req]),   
              {ok, D, []} 
            = rfc4627:decode(Req),   
              {obj, [{
            "name", _Name}, {"age", Age}]} = D,   
              Name 
            = binary_to_list(_Name),   
              io:format(
            "Name: ~p, Age: ~p~n", [Name, Age]),   
              Resp 
            = rfc4627:encode({obj, [{"name"'Hideto2'}, {"age"24}]}),   
              do_send(Sock,Resp),   
              gen_tcp:close(Sock).   
              
            %% send a line of text to the socket   
            do_send(Sock,Msg) 
            ->   
              
            case gen_tcp:send(Sock, Msg) of   
                ok 
            -> ok;   
                {error, Reason} 
            -> exit(Reason)   
              end.   
              
            %% receive data from the socket   
            do_recv(Sock) 
            ->   
              
            case gen_tcp:recv(Sock, 0) of   
                {ok, Bin} 
            -> binary_to_list(Bin);   
                {error, closed} 
            -> exit(closed);   
                {error, Reason} 
            -> exit(Reason)   
              end.  

            Person.as
            package  
            {   
                
            public class Person   
                {   
                    
            public var name:String;   
                    
            public var age:int;   
                    
            public function Person()   
                    {   
                    }   
                }   
            }  

            Client.as
            package {   
                
            import com.adobe.serialization.json.JSON;   
                   
                
            import flash.display.Sprite;   
                
            import flash.events.*;   
                
            import flash.net.Socket;   
                
            import flash.text.*;   
                   
                
            public class Client extends Sprite   
                {   
                    
            private var socket:Socket;   
                    
            private var myField:TextField;   
                    
            private var send_data:Person;   
                    
            public function Client()   
                    {   
                        socket 
            = new Socket();   
                        myField 
            = new TextField();   
                        send_data 
            = new Person();   
                        send_data.name 
            = "Hideto";   
                        send_data.age 
            = 23;   
                        socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);   
                        socket.connect(
            "localhost"8888);   
                        socket.writeUTFBytes(JSON.encode(send_data));   
                        socket.flush();   
                        myField.x 
            = 20;   
                        myField.y 
            = 30;   
                        myField.text 
            = "test";   
                        myField.autoSize 
            = TextFieldAutoSize.LEFT;   
                        addChild(myField);   
                    }   
                    
            private function onSocketData(event:ProgressEvent):void {   
                        
            while(socket.bytesAvailable) {   
                            var recv_data:
            * = JSON.decode(socket.readUTFBytes(socket.bytesAvailable));   
                            myField.text 
            = "Name: " + recv_data.name + ", age: " + recv_data.age.toString();   
                        }   
                    }   
                }   

            運行Erlang服務器端:
            Eshell> c(server).   
            Eshell
            > server:start().   
            "{\"name\":\"Hideto\",\"age\":23}"  
            Name: 
            "Hideto", Age: 23 

            這里打印出了Erlang Socket Server接收到的AS3 Client發過來的JSON decode過的一個person對象

            運行AS3客戶端:
            client.html上首先顯示“test”,然后異步處理完Socket消息發送和接受后,decode Erlang Server端發過來的person對象,將頁面上的TextField替換為“Name: Hideto2, age: 24”
            posted on 2009-09-18 16:07 暗夜教父 閱讀(793) 評論(0)  編輯 收藏 引用 所屬分類: erlang

            <2009年9月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲中文字幕无码久久2017| 久久久久久久尹人综合网亚洲| 国产精品99久久久久久猫咪| 久久狠狠一本精品综合网| 色天使久久综合网天天| 三上悠亚久久精品| 国产综合成人久久大片91| 精品熟女少妇AV免费久久| 色综合久久综精品| 色婷婷综合久久久久中文一区二区| 日韩亚洲欧美久久久www综合网| 精品国产乱码久久久久软件| 色综合久久久久| 韩国免费A级毛片久久| 久久久精品久久久久影院| 国产精品热久久无码av| 久久99热狠狠色精品一区| 亚洲成色WWW久久网站| 久久男人中文字幕资源站| 91精品国产色综久久| 久久久久久久久无码精品亚洲日韩| 日韩十八禁一区二区久久| 欧美精品一区二区精品久久| 欧美一区二区三区久久综| 久久久久久曰本AV免费免费| 久久久黄片| 久久人人爽人人爽AV片| 久久久人妻精品无码一区| 国产成人99久久亚洲综合精品| 99久久er这里只有精品18| 久久精品人人做人人妻人人玩| 人妻精品久久无码区| 国产精品女同久久久久电影院| 亚洲狠狠婷婷综合久久蜜芽| 国色天香久久久久久久小说| 久久久久久精品免费看SSS | 亚洲精品白浆高清久久久久久| 久久婷婷人人澡人人爽人人爱| 久久精品成人欧美大片| 亚洲日韩中文无码久久| 久久久久久a亚洲欧洲aⅴ|