• <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://www.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://www.shnenglu.com/ace
            ?*????????? 增加了用戶可調試性;解決了內存問題,注原作者要求忽略內存問題,關注于
            ??????????? Reactor本身
            ?
            ?************************************************************************/
            posted on 2006-04-12 18:01 Stone Jiang 閱讀(1027) 評論(0)  編輯 收藏 引用 所屬分類: ACE
            久久青青国产| 国产精品美女久久久久av爽| 久久免费视频一区| 国产精品久久久久久福利漫画| 久久天天躁狠狠躁夜夜av浪潮| 久久香蕉国产线看观看精品yw| 99久久国产综合精品成人影院| 欧美噜噜久久久XXX| 日本精品久久久久影院日本| 亚洲精品乱码久久久久66| 久久播电影网| 国产毛片久久久久久国产毛片| 欧美久久久久久| 思思久久99热只有频精品66| 最新久久免费视频| 欧美激情一区二区久久久| 久久伊人中文无码| 久久国产精品无| 久久久久久国产精品美女| 久久天天躁夜夜躁狠狠躁2022 | 久久只这里是精品66| 中文成人无码精品久久久不卡| 无码任你躁久久久久久久| 久久精品国产亚洲AV不卡| 亚洲国产成人精品久久久国产成人一区二区三区综| 蜜臀久久99精品久久久久久小说| 精品久久久久久亚洲精品| 香港aa三级久久三级| 久久久精品久久久久久 | 亚洲国产精品婷婷久久| 免费精品久久久久久中文字幕| 亚洲国产精品无码久久青草| 久久精品久久久久观看99水蜜桃| 久久久久亚洲av无码专区| 久久综合久久鬼色| 成人亚洲欧美久久久久| 思思久久99热只有频精品66| 国产精品gz久久久| 99久久亚洲综合精品网站| 亚洲AV日韩AV天堂久久| 三级三级久久三级久久|