• <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++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              64 Posts :: 3 Stories :: 22 Comments :: 0 Trackbacks
            ??1?/************************************************************************?
            ??2??*?@file:?test02.cpp????????????????????????????????????????????????????
            ??3??*?@author:?AGP
            ??4??*?@revise:?Stone?Jiang?<2005119@gmail.com>?http://www.shnenglu.com/ace
            ??5??*??????????增加了用戶可調(diào)試性;解決了內(nèi)存問題,注原作者要求忽略內(nèi)存問題,關(guān)注于
            ??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","客戶端要求服務(wù)端停止服務(wù)"));
            ?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鍵使服務(wù)安全退出\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://www.shnenglu.com/ace
            ?*????????? 增加了用戶可調(diào)試性;解決了內(nèi)存問題,注原作者要求忽略內(nèi)存問題,關(guān)注于
            ??????????? Reactor本身
            ?
            ?************************************************************************/
            posted on 2006-04-12 18:01 Stone Jiang 閱讀(1027) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACE
            久久精品中文字幕第23页| 久久er99热精品一区二区| 久久精品国产精品亚洲艾草网美妙| 精品国产91久久久久久久| 日本精品久久久中文字幕| 亚洲午夜无码AV毛片久久| 性做久久久久久久| 99久久无码一区人妻| 国产成年无码久久久免费| 国产成人精品久久免费动漫| 久久精品无码一区二区日韩AV| 久久伊人五月丁香狠狠色| 一本大道久久a久久精品综合| 久久婷婷午色综合夜啪| 久久青青草原精品影院| 久久AV无码精品人妻糸列| 国内精品伊人久久久久影院对白| 久久精品国产2020| 久久久免费观成人影院| 欧美777精品久久久久网| 久久妇女高潮几次MBA| 久久精品国产福利国产琪琪| 国产V综合V亚洲欧美久久| 久久只这里是精品66| 精品久久久久久久久久久久久久久 | 久久丫忘忧草产品| 99久久精品国产一区二区三区| 国色天香久久久久久久小说| 色8激情欧美成人久久综合电| 久久久精品一区二区三区| 久久精品国产网红主播| 久久人人爽人人人人片av| 人人狠狠综合久久亚洲高清| 一本大道加勒比久久综合| 97精品久久天干天天天按摩| 久久久噜噜噜www成人网| 中文无码久久精品| 少妇高潮惨叫久久久久久| 亚洲乱码中文字幕久久孕妇黑人 | 女人高潮久久久叫人喷水| 看全色黄大色大片免费久久久 |