• <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://m.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://m.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
            欧美久久久久久精选9999| 久久伊人五月天论坛| 伊人久久久AV老熟妇色| 伊人久久大香线蕉av一区| 91麻豆国产精品91久久久| 香蕉久久av一区二区三区 | 9999国产精品欧美久久久久久| 久久精品国产亚洲αv忘忧草| 精品久久久久久久久午夜福利| 中文精品久久久久人妻不卡| 亚洲欧美一区二区三区久久| 婷婷久久综合| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲国产视频久久| 久久久精品无码专区不卡| 99久久国产免费福利| 99久久国产亚洲高清观看2024| 久久青草国产精品一区| 久久国产乱子精品免费女| 99久久免费国产精精品| 久久精品国产91久久麻豆自制| 久久精品国产99国产精品澳门 | 伊人久久精品线影院| 久久精品国产亚洲一区二区| 久久只有这精品99| 国产精品99久久久久久人| 国产香蕉97碰碰久久人人| 成人国内精品久久久久影院| 久久精品桃花综合| 久久涩综合| 久久香蕉国产线看观看99| 国产精品久久久久…| 久久香综合精品久久伊人| 久久久这里有精品中文字幕| 久久久亚洲欧洲日产国码是AV| 国内精品九九久久久精品| 亚洲av伊人久久综合密臀性色| 亚洲国产精品无码久久青草| 少妇被又大又粗又爽毛片久久黑人 | 无码人妻精品一区二区三区久久 | 精品人妻伦一二三区久久 |