ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:23.39KB ,
资源ID:24961434      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24961434.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(qtService组件使用说明.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

qtService组件使用说明.docx

1、qtService组件使用说明qtService组件使用说明一、 描述QtService组件可用于开发Windows服务和Unix守护进程。该项目提供的QtService模板类可用于实现服务应用程序,QtServiceController类可用于控制服务。在Windows系统用服务控制管理器实现。在Unix系统服务用守护进程实现。二、 类说明:1、 QtServiceControllerQtServiceController类提供了一组函数,可实现从另外的应用程序来安装和运行服务并查询、控制其执行状态。成员类型:enum QtServiceController : StartupType启动类

2、型:常量值描述QtServiceController : AutoStartup0随系统启动自动启动。QtServiceController : ManualStartup1手动启动。仅用于Windows环境 成员函数:QtServiceController : QtServiceController(constQStringname)创建指定名称服务的控制器。QtServiceController :QtServiceController()virtual销毁服务控制器。bool QtServiceController : install(constQStringserviceFilePat

3、h,constQStringaccount= QString(),constQStringpassword= QString()static为指定文件安装服务,如安装成功返回true,否则返回false。在Windows中使用给定的帐户和密码安装服务到服务控制管理器中。在Unix服务配置中,使用“QtSoftware”作为组织名称写入QSettings : SystemScope。帐户和密码参数被忽略。bool QtServiceController : isInstalled()const检测服务是否安装,如已安装则返回true;否则返回false。bool QtServiceControl

4、ler : isRunning()const检测服务运行状态,正在运行则返回true;否则返回false。bool QtServiceController : pause()暂停服务,成功暂停则返回true;否则返回false。仅当服务状态为QtServiceBase : CanBeSuspended时支持服务暂停。bool QtServiceController : resume()服务继续,服务成功恢复,则返回true;否则返回false。bool QtServiceController : sendCommand(intcode)将用户命令代码发送到服务,如请求成功发则返回true;否则

5、返回false。该服务将调用QtServiceBase : processCommand()实现。QStringQtServiceController : serviceDescription()const返回服务的描述。QStringQtServiceController : serviceFilePath()const返回服务相关的文件路径。QStringQtServiceController : serviceName()const返回服务名称。bool QtServiceController : start(constQStringListarguments)启动服务,并传递参数。启动

6、成功则返回true;否则返回false。bool QtServiceController : start()启动服务,不传递参数。StartupTypeQtServiceController : startupType()const返回服务启动类型。bool QtServiceController : stop()停止服务。停止成功则返回true;否则为false。bool QtServiceController : uninstall()卸载服务,成功则返回true;否则返回false。使用系统的服务控制管理器卸载Windows服务。在Unix服务配置中,使用QSettings : Syst

7、emScope以“QtSoftware”作为组织名称来清除。2、 QtServiceBaseQtServiceBase类提供了一个用于实现Windows服务和Unix守护进程的API。服务通常是非交互式控制台应用程序。可以使用QtServiceController : sendCommand()和QtService : processCommand(),结合使用共享设置文件实现简单的通信。服务应用程序的main函数实例:int main(int argc, char *argv) MyService service(argc, argv); return service.exec(); 命令行

8、参数说明:短参数长参数说明-i-install安装服务。-u-uninstall卸载服务。-e-exec作为独立应用程序执行。-t-terminate停止服务。-p-pause暂停服务。-r-resume恢复暂停的服务。-c cmd-command cmd将用户定义的命令代码cmd发送到服务应用程序。-v-version显示版本和状态信息。缺省参数时,exec()将依次调用createApplication()、executeApplication()、start()函数后启动服务等待来自服务控制器的命令。成员类型:enum QtServiceBase : MessageType消息类型:常量

9、值描述QtServiceBase :Success0操作已成功,例如服务已启动。QtServiceBase :Error1操作失败,例如服务无法启动。QtServiceBase : Warning2操作导致可能需要用户交互的警告。QtServiceBase : Information3任何类型的通常非关键的信息。enum QtServiceBase:ServiceFlagflags QtServiceBase:ServiceFlags服务标识:常量值描述QtServiceBase : Default0x00服务可以停止,但不会暂停。QtServiceBase : CanBeSuspended0

10、x01服务可以暂停。QtServiceBase : CannotBeStopped0x02无法停止服务。QtServiceBase : NeedsStopOnShutdown0x04(仅限Windows)服务将在系统关闭之前停止。ServiceFlags类型用QFlags定义,其值可以采用“或”组合的形式存储。成员函数:QtServiceBase : QtServiceBase(intargc,char *argv,constQStringname)创建服务实例,命名为name。调用exec ()函数后解析argc和argv参数,并被传递给应用程序的构造函数。应用程序类型由QtService子

11、类确定。服务既未安装也未启动。服务名称不能包含任何反斜杠,长度不超过255个字符。此外,该名称在系统的服务数据库中必须是唯一的。QtServiceBase :QtServiceBase()virtual销毁服务对象。既不停止也不卸载服务。void QtServiceBase : createApplication(intargc,char *argv)pure virtual protected使用argc和argv参数创建应用程序对象。此函数仅在服务构造时未使用特定服务参数时使用,由exec()在调用executeApplication()和start()函数之前调用。可在构造需要额外参数的

12、应用程序时重新实现createApplication()函数。int QtServiceBase : exec()执行服务。exec()函数将解析在argv中传递的特定服务参数,执行所需的操作,然后退出。没有服务特定参数时,exec()将依次调用createApplication()、executeApplication()、start()函数后返回,同时启动服务等待服务控制器的命令。int QtServiceBase : executeApplication()pure virtual protected执行以前使用createApplication()函数创建的应用程序。此函数仅在服务构造

13、时未使用特定服务参数时使用,由exec()在调用createApplication()和start()两函数之间调用。QtServiceBase * QtServiceBase : instance()static返回一个指向当前应用程序的QtServiceBase实例指针。void QtServiceBase : logMessage(constQStringmessage,MessageTypetype= Success,intid= 0,uintcategory= 0,constQByteArraydata= QByteArray()写日志消息。message:消息内容id:消息标识符c

14、ategory:消息类别data:可以包含任意二进制数据。在Windows系统注册表中注册的消息文件要求必须提供消息字符串的id和category,参阅MSDN。void QtServiceBase : pause()virtual protected暂停服务,虚函数需重新实现(如停止轮询计时器或忽略套接字通知程序)。void QtServiceBase : processCommand(intcode)virtual protected处理用户命令代码,虚函数需重新实现。void QtServiceBase : resume()virtual protected暂停服务后恢复,虚函数需重新实

15、现。QStringQtServiceBase : serviceDescription()const返回服务的描述。ServiceFlagsQtServiceBase : serviceFlags()const返回使用ServiceFlag枚举描述的服务状态,如是否可暂停、关机前是否需停止服务等标识。QStringQtServiceBase : serviceName()const返回服务名称。void QtServiceBase : setServiceDescription(constQStringdescription)设置服务描述。void QtServiceBase : setSer

16、viceFlags(ServiceFlagsflags)设置服务标志的状态。void QtServiceBase : setStartupType(QtServiceController : StartupTypetype)设置服务启动类型。void QtServiceBase : start()pure virtual protected启动服务,虚函数必须在QtServiceBase子类中实现。此函数是服务的核心,可在此创建需要的主要对象。此函数仅在服务构造时未使用特定服务参数时使用,由exec()在调用executeApplication()函数之后调用。QtServiceControl

17、ler : StartupTypeQtServiceBase : startupType()const返回服务启动类型。void QtServiceBase : stop()virtual protected停止服务,虚函数需重新实现。可在此处执行服务关闭前的清理工作,比如删除在start()函数中创建主对象等。3、 QtServiceQtService是一个为应用程序创建后台服务的模板类。服务通常是非交互式控制台应用程序,但是可以通过QtServiceController : sendCommand()和QtService : processCommand()结合使用一个共享设置文件进行些简

18、单的通信。注意:在Unix系统上,此类依赖于QtNetwork模块工具。使用示例:class MyService : public QtService public: MyService(int argc, char *argv); MyService(); protected: void start(); void stop(); void pause(); void resume(); void processCommand(int code); ; int main(int argc, char *argv) MyService service(argc, argv); return s

19、ervice.exec();使用QCoreApplication适用于没有GUI的服务,QApplication适用于有GUI的服务。需要通过重新实现QtServiceBase:start()函数来执行服务的核心工作。需要重新实现QtServiceBase:pause(),QtServiceBase:processCommand(),QtServiceBase:resume()和QtServiceBase:stop()等函数响应控制器干预服务的请求。exec()函数解析argv中传递的服务特定参数,执行所需的操作,然后退出。当argv中没有传递服务特定参数时,exec()将依次调用create

20、Application()、executeApplication()、start()函数后返回,此时服务启动等待服务控制器的命令。成员函数:QtService : QtService(intargc,char *argv,constQStringname)构造名为name的服务对象。argc和argv中的参数在exec()函数解析后传递给应用程序的构造函数。在一个进程中只能有一个QtService对象。QtService :QtService()销毁服务对象。Application * QtService:application () const protected返回指向应用程序对象的指针。

21、void QtService : createApplication(intargc,char *argv)virtual protected创建应用程序类型的应用程序对象,将argc和argv传递给其构造函数,虚函数需重新实现。int QtService : executeApplication()virtual protected执行以前使用createApplication()函数创建的应用程序,虚函数需重新实现。三、 示例1、 An Interactive Service 互动服务这个例子演示了如何建立QtService类的子类,如何使用start(),stop(),pause(),r

22、esume(),以及如何使用processCommand()在运行时接收控制命令。 #include #include #include #include #include #include qtservice.h class InteractiveService : public QtService public: InteractiveService(int argc, char *argv); InteractiveService(); protected: void start(); void stop(); void pause(); void resume(); void proc

23、essCommand(int code); private: QLabel *gui; ; InteractiveService:InteractiveService(int argc, char *argv) : QtService(argc, argv, Qt Interactive Service), gui(0) setServiceDescription(A Qt service with user interface.); setServiceFlags(QtServiceBase:CanBeSuspended); InteractiveService:InteractiveSer

24、vice() void InteractiveService:start() #if defined(Q_OS_WIN) if (QSysInfo:WindowsVersion & QSysInfo:WV_NT_based) & (QSysInfo:WindowsVersion = QSysInfo:WV_VISTA) logMessage( Service GUI not allowed on Windows Vista. See the documentation for this example for more information., QtServiceBase:Error );

25、return; #endif qApp-setQuitOnLastWindowClosed(false); gui = new QLabel(Service, 0, Qt:WindowStaysOnTopHint | Qt:FramelessWindowHint); gui-move(QApplication:desktop()-availableGeometry().topLeft(); gui-show(); void InteractiveService:stop() delete gui; void InteractiveService:pause() if (gui) gui-hid

26、e(); void InteractiveService:resume() if (gui) gui-show(); void InteractiveService:processCommand(int code) gui-setText(Command code + QString:number(code); gui-adjustSize(); int main(int argc, char *argv) #if !defined(Q_WS_WIN)/ QtService在SystemScope中存储服务设置,通常需要root权限。/要想用非root用户测试此例,需更改SystemScope

27、设置文件中的目录 QSettings:setPath(QSettings:NativeFormat, QSettings:SystemScope, QDir:tempPath(); qWarning(Example uses dummy settings file: %s/QtSoftware.conf), QDir:tempPath().toLatin1().constData(); #endif InteractiveService service(argc, argv); return service.exec(); 2、 A simple HTTP Server HTTP服务器监听端口

28、默认为8080。为每个GET请求返回一个简单的HTML页面后,关闭连接。class HttpDaemon : public QTcpServer Q_OBJECT public: HttpDaemon(quint16 port, QObject* parent = 0) : QTcpServer(parent), disabled(false) listen(QHostAddress:Any, port); void incomingConnection(int socket) if (disabled) return;/当一个新的客户端连接时,服务器构造一个QTcpSocket与客户端的通信

29、。/由于QTcpSocket是异步工作的,这意味着所有的通信都是在readClient()和discardClient()两个槽中完成。 QTcpSocket* s = new QTcpSocket(this); connect(s, SIGNAL(readyRead(), this, SLOT(readClient(); connect(s, SIGNAL(disconnected(), this, SLOT(discardClient(); s-setSocketDescriptor(socket); QtServiceBase:instance()-logMessage(New Connection); void pause() disabled = true; void resume() disabled = false; private slots: void readClient() if (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1