• <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无码免费网| 久久综合久久综合久久综合| 伊人色综合久久天天人守人婷| 久久亚洲中文字幕精品一区| 狠狠色婷婷久久综合频道日韩| 国产午夜精品理论片久久影视| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久婷婷五月综合97色 | 久久亚洲国产成人影院网站| 久久久久久精品久久久久| 国产精品久久久久国产A级| 久久久久黑人强伦姧人妻| 无码伊人66久久大杳蕉网站谷歌 | 久久中文精品无码中文字幕| 午夜天堂av天堂久久久| 久久国产免费直播| 亚洲国产精品久久66| 久久久无码精品亚洲日韩按摩 | 国内精品人妻无码久久久影院导航| 国产一区二区三区久久| 亚洲综合熟女久久久30p| 久久久久国产精品嫩草影院| 国产一级持黄大片99久久| 亚洲精品无码久久千人斩| 精品国产乱码久久久久久浪潮 | 国产99久久久国产精品小说| 一本久久a久久精品综合夜夜 | 色欲综合久久躁天天躁| 国产免费久久精品99久久| 青青青伊人色综合久久| 国产精品99久久免费观看| 中文字幕乱码久久午夜| 国内精品伊人久久久影院| 青青热久久国产久精品 | 久久人人爽人人爽人人AV东京热 | 精品国产一区二区三区久久久狼| 麻豆精品久久久久久久99蜜桃| 国内精品久久久久影院老司| 欧美黑人激情性久久| 久久久久99精品成人片试看 | 一级a性色生活片久久无少妇一级婬片免费放|