• <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發(fā)過來的JSON decode過的一個person對象

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

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

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            伊人久久大香线焦AV综合影院 | 久久亚洲国产精品成人AV秋霞| 久久国产午夜精品一区二区三区| 无码人妻久久一区二区三区免费| 国产99久久久国产精品小说| 午夜精品久久久久久久久| 2021少妇久久久久久久久久| 99久久精品免费国产大片| 亚洲一区精品伊人久久伊人| 精品久久久无码人妻中文字幕| 久久久久国产精品| 思思久久精品在热线热| 国产精品免费久久久久久久久| 亚洲AⅤ优女AV综合久久久| 国产V亚洲V天堂无码久久久| 国产亚洲精午夜久久久久久 | 精品无码久久久久国产动漫3d| 国产欧美久久一区二区| 久久天天躁狠狠躁夜夜2020一| 免费观看久久精彩视频| 人妻精品久久无码区| 亚洲欧美一级久久精品| 国产精品一区二区久久精品无码| 一本色道久久99一综合| 午夜精品久久久久成人| 久久99国产精品成人欧美| 久久精品国产半推半就| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久综合国产乱子伦精品免费| 人妻精品久久久久中文字幕| 久久精品www| 一级做a爰片久久毛片16| 69国产成人综合久久精品| 久久99精品久久久久婷婷| 无码国内精品久久人妻| 国产精品久久久久久久人人看| 一本大道久久东京热无码AV| 久久伊人精品青青草原日本| 欧美午夜A∨大片久久 | 精品无码久久久久久久久久| 93精91精品国产综合久久香蕉|