• <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>

            Focus on ACE

            訂閱 ace-china
            電子郵件:
            瀏覽存于 groups.google.com 上的所有帖子

            C++博客 首頁 新隨筆 聯系 聚合 管理
              64 Posts :: 3 Stories :: 22 Comments :: 0 Trackbacks
            ??1?/************************************************************************?
            ??2??*?@file:?test02.cpp????????????????????????????????????????????????????
            ??3??*?@author:?AGP
            ??4??*?@revise:?Stone?Jiang?<2005119@gmail.com>?http://m.shnenglu.com/ace
            ??5??*??????????增加了用戶可調試性;解決了內存問題,注原作者要求忽略內存問題,關注于
            ??6?????????????Reactor本身
            ??7??
            ??8??************************************************************************/
            ??9?
            ?10?#ifdef?_DEBUG
            ?11?#pragma?comment?(lib,"aced.lib")
            ?12?#else
            ?13?#pragma?comment?(lib,"ace.lib")
            ?14?#endif
            ?15?
            ?16?#include?"ace/Reactor.h"
            ?17?#include?"ace/SOCK_Acceptor.h"
            ?18?#include?"ace/os.h"
            ?19?
            ?20?#define?PORT_NO?19998
            ?21?typedef?ACE_SOCK_Acceptor?Acceptor;
            ?22?//forward?declaration
            ?23?class?My_Accept_Handler;
            ?24?
            ?25?class?My_Input_Handler:public?ACE_Event_Handler
            ?26?{
            ?27?public:
            ?28?????//construcor
            ?29?????My_Input_Handler()
            ?30?????{
            ?31?????????ACE_DEBUG((LM_DEBUG,"Constructor\n"));
            ?32?????}
            ?33?
            ?34???~My_Input_Handler()
            ?35???{
            ?36?????ACE_DEBUG((LM_DEBUG,"Deconstructor\n"));
            ?37???}
            ?38?
            ?39?????//Called?back?to?handle?any?input?received
            ?40?????int?handle_input(ACE_HANDLE)
            ?41?????{
            ?42?????????//receive?the?data
            ?43?????????ssize_t?recvBytes?=?peer().recv(data,12);
            ?44?????if(recvBytes?<=?0)
            ?45?????{
            ?46????????ACE_DEBUG((LM_DEBUG,"%s\n","客戶端斷開連接"));
            ?47????????return?-1;
            ?48?????}
            ?49?????data[recvBytes]?=?0;
            ?50?????
            ?51?????????ACE_DEBUG((LM_DEBUG,"%s\n",data));
            ?52????
            ?53?
            ?54?????if(ACE_OS::strcmp(data,"q")?==?0)
            ?55?????{
            ?56???????ACE_DEBUG((LM_DEBUG,"%s\n","客戶端要求服務端停止服務"));
            ?57???????peer().close();
            ?58???????ACE_Reactor::instance()->end_reactor_event_loop();
            ?59???????return?-1;
            ?60?????}
            ?61?????peer().send_n(data,recvBytes);
            ?62?????????//?do?something?with?the?input?received.
            ?63?????????//?
            ?64?????????//?keep?yourself?registerd?with?the?reator
            ?65?????????return?0;
            ?66?????}
            ?67?
            ?68???int?handle_close(ACE_HANDLE?h,ACE_Reactor_Mask?m)
            ?69???{
            ?70?????delete?this;
            ?71?????return??0;
            ?72???}
            ?73?
            ?74?????//Used?by?the?reactor?to?determine?the?underlying?handle
            ?75?????ACE_HANDLE?get_handle()??const?
            ?76?????{
            ?77?????????return?this->peer_.get_handle();
            ?78?????}
            ?79?
            ?80?????//Returns?a?reference?to?the?underlying?stream.
            ?81?????ACE_SOCK_Stream&?peer()
            ?82?????{
            ?83?????????return?this->peer_;
            ?84?????}
            ?85?
            ?86?private:
            ?87?????ACE_SOCK_Stream?peer_;
            ?88?????char?data?[12];
            ?89?};
            ?90?
            ?91?class?My_Accept_Handler:public?ACE_Event_Handler
            ?92?{
            ?93?public:
            ?94?????//Constructor
            ?95?????My_Accept_Handler(ACE_Addr?&addr)
            ?96?????{
            ?97?????????this->open(addr);
            ?98?????}
            ?99?
            100?????//Open?the?peer_acceptor?so?it?starts?to?"listen"
            101?????//for?incoming?clients
            102?????int?open(ACE_Addr?&addr)
            103?????{
            104?????????peer_acceptor.open(addr);
            105?????????return?0;
            106?????}
            107?
            108?????//Overload?the?handle?input?method
            109?????int?handle_input(ACE_HANDLE?handle)
            110?????{
            111?????????//Client?has?requested?connection?to?server.
            112?????????//Create?a?handler?to?handle?the?connection
            113?????????My_Input_Handler?*eh?=?new?My_Input_Handler();
            114?
            115?????????//Accept?the?connection?"into"?the?Event?Handler
            116?????????if(this->peer_acceptor.accept(eh->peer(),//stream
            117?????????????0,//remote?address
            118?????????????0,//timeout
            119?????????????1)?==?-1)//restart?if?interrupted
            120?????????????ACE_DEBUG((LM_ERROR,"Error?in?connection?\n"));
            121?????????
            122?????????ACE_DEBUG((LM_DEBUG,"Connection?established\n"));
            123?
            124?????????//Register?the?input?event?handler?for?reading?
            125?????????ACE_Reactor::instance()->register_handler(eh,ACE_Event_Handler::READ_MASK);
            126?????const?char*?msg?=?"按q鍵使服務安全退出\r\n";
            127?????eh->peer().send_n(msg,strlen(msg)+1);
            128?????????//Unregister?as?the?acceptor?is?not?expecting?new?clients
            129?????????return?-1;
            130?????}
            131?
            132?????//Used?by?the?reactor?to?determine?the?underlying?handle
            133?????ACE_HANDLE?get_handle(void)?const
            134?????{
            135?????????return?this->peer_acceptor.get_handle();
            136?????}
            137?
            138?private:
            139?????Acceptor?peer_acceptor;
            140?};
            141?
            142?int?ACE_TMAIN(int?argc,char?*argv[])
            143?{
            144?????//Create?an?address?on?which?to?receive?connections
            145??
            146?????ACE_INET_Addr?addr(PORT_NO);
            147?
            148?????//Create?the?Accept?Handler?which?automatically?begins?to?"listen"
            149?????//for?client?requests?for?connections
            150?????My_Accept_Handler?*eh=new?My_Accept_Handler(addr);
            151?
            152?????//Register?the?reator?to?call?back?when?incoming?client?connects?
            153?????ACE_Reactor::instance()->register_handler(eh,ACE_Event_Handler::ACCEPT_MASK);
            154?
            155?????//Start?the?event?loop
            156?????
            157???ACE_Reactor::instance()->run_reactor_event_loop();
            158?
            159???delete?eh;
            160??
            161???return?0;
            162?}

            /************************************************************************
            ?* @file: test02.cpp???????????????????????????????????????????????????
            ?* @author: AGP
            ?* @revise: Stone Jiang <2005119@gmail.com> http://m.shnenglu.com/ace
            ?*????????? 增加了用戶可調試性;解決了內存問題,注原作者要求忽略內存問題,關注于
            ??????????? Reactor本身
            ?
            ?************************************************************************/
            posted on 2006-04-12 18:01 Stone Jiang 閱讀(1040) 評論(0)  編輯 收藏 引用 所屬分類: ACE
            精品无码久久久久久久动漫| 狠狠色丁香久久婷婷综合蜜芽五月 | 亚洲精品乱码久久久久久蜜桃不卡| 久久人与动人物a级毛片| 69久久精品无码一区二区| 国产国产成人久久精品| 无码国内精品久久人妻| 久久99精品久久久久久9蜜桃| 久久无码专区国产精品发布| 精品无码久久久久国产| 亚洲人成无码网站久久99热国产| 99久久er这里只有精品18| 亚洲一区精品伊人久久伊人| 精品久久久久久中文字幕人妻最新 | 浪潮AV色综合久久天堂| 国产三级观看久久| 久久精品aⅴ无码中文字字幕重口| 国产午夜精品久久久久九九| 久久精品国产亚洲AV香蕉| 国产毛片欧美毛片久久久| 久久国产福利免费| 99久久精品国产一区二区三区| 囯产极品美女高潮无套久久久| 国内精品久久久久久中文字幕| 久久国产精品一国产精品金尊| 欧美亚洲国产精品久久高清| 久久97久久97精品免视看秋霞 | 欧美精品一区二区久久| 国产99久久九九精品无码| 精品久久香蕉国产线看观看亚洲| 伊人久久大香线蕉亚洲五月天| 久久综合色老色| 热99RE久久精品这里都是精品免费 | 一级女性全黄久久生活片免费| 久久久黄片| 久久99精品久久久久久野外| 99久久精品免费看国产一区二区三区| 久久精品国产亚洲AV麻豆网站| 久久精品国产亚洲AV高清热| 波多野结衣中文字幕久久| 精品久久一区二区三区|