• <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 暗夜教父 閱讀(786) 評論(0)  編輯 收藏 引用 所屬分類: erlang

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

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品一本到99热免费| 青草国产精品久久久久久| 国产精品美女久久福利网站| 中文字幕精品无码久久久久久3D日动漫 | 91精品国产91久久久久久| 久久国产成人| 99久久99久久精品免费看蜜桃| 九九久久精品国产| 精品国产乱码久久久久久郑州公司 | 国产精品成人久久久| av国内精品久久久久影院| 久久99热这里只有精品66| 欧美777精品久久久久网| 精产国品久久一二三产区区别| 91精品国产高清久久久久久国产嫩草 | 久久综合狠狠综合久久激情 | 久久久久亚洲AV无码专区首JN| 99久久精品费精品国产| 中文精品久久久久人妻不卡| 亚洲国产成人久久精品影视| 久久人人爽人人爽人人片AV不| 欧美与黑人午夜性猛交久久久| 伊人丁香狠狠色综合久久| 久久精品国产亚洲av水果派| 欧美亚洲国产精品久久| 久久久青草青青国产亚洲免观| 韩国无遮挡三级久久| 久久久老熟女一区二区三区| 中文字幕无码久久久| 久久人人爽人爽人人爽av| 久久精品不卡| 九九久久精品国产| 国产日韩久久免费影院| 国产精品va久久久久久久| 久久99精品国产麻豆宅宅| 久久精品免费观看| 99久久国产综合精品麻豆| 久久精品国产精品青草app| 久久99热狠狠色精品一区| 色综合久久天天综合| 99久久夜色精品国产网站|