青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Focus on ACE

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

C++博客 首頁 新隨筆 聯系 聚合 管理
  64 Posts :: 3 Stories :: 22 Comments :: 0 Trackbacks

Visual C++下ACE動態服務配置入門
摘要:
?? 服務動態配置在編寫服務端應用在有很明顯的優點,本文簡要介紹用visual C++ (7.1)
編寫ACE動態服務的步驟。
?? 本文適用于ACE初學者。
??
1. 主進程

1.1 創建主程序
??? 用Viusal Studio創建一空Win32 Console項目,這里命名為GLIVR86ServiceD.注,這里
D表示Daemon,不是Debug。表示我們以后會把這個項目改造為了NT_Service(以后介紹步驟.
1.2 修改項目屬性 (Configuation Properties)
1.2.1 為項目新增主文件 GLIVR86ServiceD.cpp,目的是為項目屬性中,增加C/C++選項
1.2.1 General 修改程序輸出路徑$(OutDir)
1.2.2.Debugging? Command Arguments: -d, 以調試模式啟動
1.2.3 C/C++設置
1.2.3.1 Additional Include Directories /I[path]: $(ACE_ROOT);
1.2.3.2 Code Generation: /MTd ;/MT 調試版選MTd,發行版選 MT
1.2.3.3 Preprocessor:Preprocesor Definitions/D: WIN32;_DEBUG;_CONSOLE;
?????????????? 這是調試版,發行版將_DEBUG改為NDEBUG
1.2.4 鏈接設置
1.2.4.1 Input: Additinal Dependencise: ACE(d).lib,調試版選aced.lib,
?????????????????????????????????????????????????? 發行版選ace.lib
1.2.4.2 System: SubSystem /subsystem: Console ;?? (/SUBSYSTEM:CONSOLE)

主程序代碼


?

// @file:??GLIVR86ServiceD.cpp?
// @description:??IVR?86業務服務主程序入口
// @author:?jiangtao
// @version:2.0.0

#include?
" stdafx.h "
#include?
< memory > ?? // ?使用?auto_ptr

#include?
" ACE/OS_NS_unistd.h "
#include?
" ACE/TP_Reactor.h "
#include?
" ACE/Reactor.h "
#include?
" ACE/Service_Config.h "
#include?
" ACE/Thread_Manager.h "

// 線程池
static ?ACE_THR_FUNC_RETURN?event_loop?( void ? * arg)?
{
????ACE_DEBUG((LM_INFO,
" (%P|%t),event_loop()\n " ));
????ACE_Reactor?
* reactor? = ?static_cast < ACE_Reactor? *> ?(arg);

????reactor
-> owner?(ACE_OS::thr_self?());
????reactor
-> run_reactor_event_loop?();
????
return ? 0 ;
}


int
ACE_TMAIN?(
int ?argc,?ACE_TCHAR? * argv[])
{
??
????
const ?size_t?N_THREADS? = ? 4 ;
????ACE_TP_Reactor?tp_reactor;
????ACE_Reactor?reactor?(
& tp_reactor);
????auto_ptr
< ACE_Reactor > ?delete_instance(ACE_Reactor::instance?( & reactor));
???
?????
if ?(ACE_Service_Config::open?(argc,?argv)? == ? - 1 )
????????????ACE_ERROR_RETURN?((LM_ERROR,
????????????ACE_TEXT?(
" %p\n " ),
????????????ACE_TEXT?(
" open " )),
????????????
1 );
???????
????ACE_Thread_Manager::instance?()
-> spawn_n
?????????????????(N_THREADS,?event_loop,?ACE_Reactor::instance?());

????ACE_Thread_Manager::instance?()
-> wait?();

????
return ? 0 ;
}


2. 創建被加載的服務的動態鏈接庫
2.1 用Visual Studio創建一個新的項目GLIVR86Service,我們依然從空白的Win32 Console開

1.2.1 為項目新增主文件 GLIVR86Service.cpp,目的是為項目屬性中,增加C/C++選項
1.2.1 General : Configration Type:改為 動態鏈接庫 Dynamic Library(DLL)
1.2.3.1 Additional Include Directories /I[path]: $(ACE_ROOT);
1.2.3.2 Code Generation: /MTd ;/MT 調試版選MTd,發行版選 MT
1.2.3.3 Preprocessor:Preprocesor Definitions/D:
??????????????????????? WIN32;_DEBUG;_WINDOWS;ACE_BUILD_SVC_DLL
??????????????????????? 這是調試版,發行版將_DEBUG改為NDEBUG
??????? 這里,特別注意,要增加 ACE_BUILD_SVC_DLL宏。如果用generate_export_file.pl
??????? 生成自定義的export頭文件,這個宏也可以自定義
???????
2.2.2 鏈接器設置
2.2.2.1 Input: Additinal Dependencise: ACE(d).lib,調試版選aced.lib,
?????????????????????????????????????????????????? 發行版選ace.lib
2.2.2.2 System: SubSystem /subsystem: Console ;?? (/SUBSYSTEM:CONSOLE)
2.2.2.3 General ,Output file:
???????????????? ../GLIVR86ServiceD/GLIVR86ServiceD/GLIVR86ServiceD.dll
???
??????????????????? 這里填寫上GLIVR86ServiceD的路徑或環境變量Path中指
??????????????????? 示的路徑,這樣可以方便調試

2.2.2.4 Adanced, Import Libaray:? $(OutDir)\GLIVR86ServiceD.lib
?????????????????????????????? 上面是調試版,發行版可以去掉后綴D,即
?????????????????????????????? $(OutDir)\GLIVR86Service.lib
??????????????????????????????
3.服務的動態鏈接庫實現

3.1 為項目增加兩個文件,分別聲明和實現服務類工廠
//@file: ServiceFactory.h
//@file: ServiceFactory.cpp
代碼分別如下

?

// @file:?ServiceFactory.h
// @description:??IVR?86業務服務
// @author:?jiangtao
// @data:?2006-7-3
// @version:1.0.0


#ifndef?SERVICEFACTORY_H
#define ?SERVICEFACTORY_H
#include?
" ACE/svc_export.h "
#include?
" ACE/Service_Config.h "
#include?
" ACE/Service_Object.h "

// 聲明服務工廠
ACE_SVC_FACTORY_DECLARE?(ServiceFactory_T)

class ?ACE_Svc_Export?ServiceFactory_T?:? public ?ACE_Service_Object
{
public :
??
/// ?Initializes?object?when?dynamic?linking?occurs.
?? virtual ? int ?init?( int ?argc,?ACE_TCHAR? * argv[]);

??
/// ?Terminates?object?when?dynamic?unlinking?occurs.
?? virtual ? int ?fini?( void );

??
/// ?Returns?information?on?a?service?object.
?? virtual ? int ?info?(ACE_TCHAR? ** info_string,?size_t?length? = ? 0 )? const ;

};


#endif ?/*?SERVICEFACTORY_H?*/




/*******************************************************************/

// @file:?ServiceFactory.cpp

#include?
" ServiceFactory.h "
#include?
" ACE/Log_Msg.h "
// 實現服務工廠
ACE_SVC_FACTORY_DEFINE?(ServiceFactory_T)

int ?ServiceFactory_T::init( int ?argc,?ACE_TCHAR? * argv[])
{
????ACE_DEBUG((LM_INFO,
" (%P|%t)?服務初始化完成\n " ));
????
return ? 0 ;
}

int ?ServiceFactory_T::info(ACE_TCHAR? ** strp,?size_t?length)? const
{
????ACE_DEBUG((LM_INFO,
" ServiceFactory_T::info()?\n " ));
????
return ? 0 ;
}

int ?ServiceFactory_T::fini( void )
{
????
return ? 0 ;
}


5.服務配置文件svc.conf
dynamic IVR86Service Service_Object * GLIVR86Service: _make_ServiceFactory_T() active
???
6. 運行結果

?

posted on 2006-07-04 13:26 Stone Jiang 閱讀(3377) 評論(0)  編輯 收藏 引用 所屬分類: ACE
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲电影免费观看高清完整版在线观看 | 欧美国产日韩a欧美在线观看| 亚洲一二三区精品| 一区二区三区**美女毛片| 欧美激情在线观看| 亚洲国产视频一区二区| 欧美国产第二页| 亚洲精品乱码久久久久久日本蜜臀| 亚洲国产精品一区制服丝袜 | 亚洲欧美精品伊人久久| 性欧美超级视频| 久久久久久久999| 欧美激情视频在线播放| 国产精品另类一区| 在线观看一区| 亚洲美女在线观看| 香蕉视频成人在线观看| 麻豆精品传媒视频| 亚洲精品一区二区三区av| 亚洲一区二区三区在线观看视频| 欧美中文在线观看国产| 欧美黑人在线观看| 国产欧美日韩视频一区二区| 亚洲国产日韩欧美| 欧美一区二区视频97| 免费在线国产精品| 亚洲狼人综合| 久久精品国产精品亚洲| 欧美日韩精品久久久| 尤物99国产成人精品视频| 一区二区三区久久| 欧美91大片| 羞羞漫画18久久大片| 欧美精品在线免费| 在线播放中文字幕一区| 亚洲欧美视频在线观看视频| 亚洲国产成人一区| 欧美呦呦网站| 国产精品久久久久久影视 | 国产日韩视频| 亚洲看片一区| 久久亚洲国产成人| 亚洲一二三区在线| 欧美日韩三级一区二区| 亚洲高清一区二| 久久精品亚洲乱码伦伦中文| 99国产精品自拍| 欧美电影免费观看大全| 原创国产精品91| 久久久久久久97| 亚洲欧美www| 欧美性开放视频| 亚洲免费观看| 亚洲第一精品福利| 久久综合九色综合久99| 国内揄拍国内精品久久| 久久国产精品免费一区| 亚洲一区三区电影在线观看| 欧美日韩国产亚洲一区| 亚洲精品免费网站| 欧美激情一区在线观看| 浪潮色综合久久天堂| 激情一区二区| 久久在线免费视频| 久久久久久一区二区| 黄色在线成人| 麻豆9191精品国产| 久久一区亚洲| 亚洲人成在线播放| 亚洲欧洲日韩在线| 欧美日韩一区三区四区| 亚洲丝袜av一区| 亚洲一区二区综合| 国产亚洲欧美在线| 麻豆国产精品777777在线| 久久午夜精品一区二区| 蜜桃av噜噜一区| 国产精品videosex极品| 亚洲字幕一区二区| 亚洲综合精品| 国内成人精品2018免费看| 女仆av观看一区| 欧美大片18| 亚洲一区综合| 欧美中文字幕精品| 亚洲精品国产精品国自产观看| 亚洲精品久久久蜜桃| 国产精品国产亚洲精品看不卡15| 久久爱91午夜羞羞| 美女久久网站| 亚洲专区国产精品| 久久精品女人的天堂av| 亚洲欧洲精品一区二区三区不卡 | 一本色道久久88综合亚洲精品ⅰ| 国产精品久久网站| 久久一区中文字幕| 国产日韩一区在线| 久久婷婷影院| 欧美国产综合视频| 午夜精品福利一区二区三区av | 午夜在线成人av| 久久嫩草精品久久久久| 夜夜爽99久久国产综合精品女不卡| 99视频精品全国免费| 国模大胆一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 国产精品亚洲一区| 亚洲电影av| 国产午夜精品久久久久久免费视| 91久久国产精品91久久性色| 国产一区二区三区在线观看免费视频| 亚洲国产精品热久久| 国产亚洲一区二区三区| aa级大片欧美| 亚洲精品久久久蜜桃| 久久黄金**| 欧美一区国产一区| 欧美日韩亚洲一区三区| 欧美国产精品久久| 韩国欧美国产1区| 亚洲一区制服诱惑| 亚洲午夜激情| 欧美极品aⅴ影院| 欧美r片在线| 激情偷拍久久| 亚洲欧美另类中文字幕| 亚洲视频播放| 欧美精品 日韩| 欧美激情精品久久久久久黑人| 国产一区二区三区在线观看免费视频| 中日韩美女免费视频网址在线观看 | 久久成人羞羞网站| 欧美一区二区三区电影在线观看| 欧美精品二区三区四区免费看视频| 蜜桃精品久久久久久久免费影院| 国产伦精品一区二区三区照片91 | 亚洲国产精品一区二区第一页| 好吊日精品视频| 久久动漫亚洲| 久久婷婷久久| 在线观看欧美日韩| 久久久久久国产精品mv| 美日韩精品视频| 一色屋精品视频在线看| 久久婷婷国产综合精品青草 | 亚洲丝袜av一区| 欧美日产一区二区三区在线观看 | 亚洲欧美日韩区| 香蕉久久夜色精品国产| 欧美日韩中文另类| 一区二区毛片| 欧美一区二区视频免费观看| 国产欧美在线视频| 久久黄金**| 亚洲电影免费观看高清完整版| 亚洲精品日韩欧美| 欧美日韩精品一区二区天天拍小说 | 欧美高清视频在线观看| 99精品99| 久久国产精品久久精品国产| 国产一区二区三区在线观看网站| 久久精品网址| 亚洲国产精品精华液2区45| 亚洲性夜色噜噜噜7777| 国产麻豆91精品| 久久久久亚洲综合| 亚洲精品日韩在线| 久久激情视频久久| 亚洲激情视频在线播放| 欧美激情一区二区三区高清视频| 亚洲乱码视频| 久久精品亚洲精品国产欧美kt∨| 亚洲第一区在线| 欧美视频精品一区| 久久久久久亚洲精品杨幂换脸 | 亚洲精品自在久久| 欧美有码在线视频| 亚洲三级影片| 国产亚洲欧美激情| 欧美日韩精品欧美日韩精品一| 新狼窝色av性久久久久久| 亚洲激情在线观看| 久久久福利视频| 国产精品99久久久久久久女警| 狠狠色伊人亚洲综合成人| 欧美网站在线观看| 老司机67194精品线观看| 亚洲无玛一区| 亚洲精品乱码久久久久久蜜桃91| 久久精品国产免费| 国产精品99久久久久久久久久久久 | 亚洲一区亚洲二区| 91久久精品国产91久久| 国产日韩一区欧美| 国产精品家教| 欧美伦理视频网站| 蜜臀av在线播放一区二区三区| 性色av一区二区三区| 亚洲午夜三级在线| 正在播放亚洲一区|