`
chengyue2007
  • 浏览: 1493815 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

c++ 客户端/服务器端框架学习笔记

    博客分类:
  • C++
阅读更多

服务器运行于独立的进程中
内核服务器: 该服务器的优先级最高,控制着从其他进程对硬件和内存的访问
                     RTimer
提供异步时间服务
                     RThread
提供线程访问和创建
                     RSemaphore
允许线程间的同步
文件服务器: 该服务器提供对文件系统的访问
                     RFs
提供对文件服务器的会话, 可以完成驱动器, 目录和文件的高层操作
                     RFile
允许文件的创建,读取和写入
                     RDir
读取目录的入口点
窗口服务器: 应用程序框架使用窗口服务器来处理按键事件和屏幕绘制
                     RWindow
用于对屏幕进行绘制,但是在开发中使用不多,用的较多的是对于CCoeControl::Draw()的覆写
                     RAnim
用于对服务器端的动画通信,它在同一线程中的优先级较高
                     CWindowGc
通行上下文,提供了对屏幕进行绘制的函数
字体与位图服务器: 该服务器在客户端共享字体和位图
                                 RFbsSession
负责字体和位图服务器的绘画管理
                                 CFbsBitmap
进行位图处理
                                 CFbsDevice
用于进行位图绘制的图象设备
消息服务器: 可以保存消息数据,并且获取对MMS,SMS,OBEX EMAIL的操作
                     CMsvSession
实现与消息服务器的会话,并且提供对消息存储的接入,以及消息服务器相关提示操作
                     CMsvEntry
提供对消息存储的接入点
                     CBaseMtm
提供高层的接口,用来接入和操作消息服务器接入点
服务器运行与同一个进程的不同线程中
电话服务器:负责设备的电话操作
RTelServer
提供对电话服务器的基本接入,电话扩展模块TSY的载入可以实现对设备电话功能的使用
RPhone
提供对设备上指定电话的操作
                      RLine
提供对电话中某一线路的操作
                      RCall
提供某一线路上的拨号/接听操作
套接字服务器: 提供通过媒介进行tcp/ipudp套接字连接的功能
                        RSocketServ
连接到套接字服务器,并且发现可用协议
                        RSocket
提供与另一个套接字连接,接收和发送数据的功能
                        RHostResolver
进行DNS动态域名服务操作,获取远程设备地址
通信服务器: 允许开发者通过电缆或红外进行串行通信
                         RCommServ
提供与通信服务器的会话
                         RComm
提供通过串行端口进行通信的必要函数


服务器插件
服务器允许采用插件的形式提供对新技术,协议和媒体的支持,例如
消息服务器包括MMS,SMS,POP3,SMTP, .
套接字服务器包括红外,蓝牙,CSD拨号等等
可以看到消息服务器通过一系列的消息协议来进行发送和接收,它允许添加各种消息类型模块MTM

服务器会话
他的结构 CServer2-CSession2-RSessionBase-RSubSessionBase
会话流程
     1.
调用客户端接口API,例如使用文件服务器的客户端API RFs::Drive() 来获得驱动器信息
     2.
调用RSessionBase::SendReceive(),通过传递操作码和指针作为参数,就可以实现服务器对客户端数据进行读取和设置.
     3.
通过内部对函数RSessionBase::SendSync()的调用,实现对内核的调用
     4.
内核调用服务器线程中的CSession2::ServiceL(),并且将消息内容的引用作为参数传递给该函数,并且用操作码来说明进行何种操作
     5.
调用RMessage2:WriteL()对客户端地址空间进行设置
     6.
调用RMessage2::Complete()指示客户端的请求已经完成

下面以文本服务器使用为例

    class RFs : public RSessionBase{...}
    class RFsBase : public RSubSessionBase
    {
      public:
          IMPORT_C void Close();
    };
    class RFile : public RFsBase
    {
       public:
             IMPORT_C TInt Open(RFs& aFs, const TDesc& aName, TUint aFileMode);
             IMPORT_C TInt Create(RFs& aFs, const TDesc& aName, TUint aFileMode);
             IMPORT_C TInt Read(TDesc8& aDes) const;
             IMPORT_C TInt Write(const TDesc8& aDes);
              ....
     }

   
从文本文件读取数据的功能
   
    HBufC8* CFileUtil::ReadL(const TDesC& aFileName)
    {
        RFs fs;
        User::LeaveIfError(fs.Connect());
        CleanupClosePushL(fs);
        RFile file;
        User::LeaveIfError(file.Open(fs, aFileName, EFileRead));
        CleanupClosePushL(file);
        TInt fileSize;
        file.Size(fileSize);
        HBufC8* data = HBufC8::NewL(fileSize);
        file.Read(*data);
        CleanupStack::PopAndDestory(2);
        return data;
    }

实验:这个实验的目的是跟踪调试一段MyApp的程序,来了解一下symbian的执行顺序,下面
是我的实验记录

用向导创建好MyApp程序后,给里面的入口E32Main加上断点,编译执行,顺序如下

E32Main --> NewApplication --> CMyApplication::CreateDocumentL
该函数位于MyAppApplication.cpp -->
CMyAppDocument::NewL
该函数位于MyApp.cpp --> CMyAppDocument::CreateAppUiL该函数位于MyAppDocument.cpp -- > CMyAppAppUi::ConstructL该函数位于MyAppAppUi.cpp -- >
CMyAppAppView::NewL
该函数位于MyAppAppView.cpp
整个流程执行完毕
执行exit菜单项 断点停留在CMyAppAppUi::HandleCommandL该函数位于MyAppAppUi.cpp
因为执行的是exit命令该函数会处理EAknSoftkeyExit命令
再执行,断点停留在CMyAppAppUi的析构函数,用来删除应用程序视图
再实行,断点停留在CMyAppDocument的析构函数
最后退出 , 试验结束

分享到:
评论

相关推荐

    学习笔记7源码-动作服务器与客户端.zip

    本文将深入探讨ROS中的动作服务器和客户端,以及如何使用C++来实现它们。 首先,理解ROS的动作系统是关键。动作与服务类似,都是ROS中的一种通信机制,但服务通常处理一次性请求-响应交互,而动作则用于处理更复杂...

    软件工程师笔记(c++,java等)

    【C++知识点】 ...这些笔记涵盖了软件工程师必备的技术栈,从基础语言到高级框架,为深入学习和理解提供了丰富的参考资料。无论是初学者还是经验丰富的开发者,都能从中获益,提升自己的专业技能。

    active mq 学习笔记

    ### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介 **定义:** - **ActiveMQ**是由Apache出品的一款功能强大的开源消息中间件。作为消息队列(Message Queue,简称MQ)的一种,它主要用来在分布式系统之间...

    VC++技术内幕学习笔记

    开发者可以通过创建和管理套接字对象,实现客户端和服务器端的交互。 **MFC并发与多线程** MFC支持多线程编程,CWinThread类提供了线程的基本操作,包括创建、同步和通信。这对于开发需要并行处理的复杂应用程序至...

    Flex + Hessian 学习笔记(二)

    2. **Hessian服务端集成**:在服务器端,开发者需要配置Hessian服务,这通常涉及到创建Java服务接口和实现。Hessian库将这些Java对象暴露为二进制HTTP服务,使得Flex客户端可以调用。 3. **Hessian客户端API**:在...

    selfimpr学习笔记合集(20101212)

    这是一个名为"selfimpr学习笔记合集(20101212)"的压缩包文件,其中包含了作者关于多种编程语言和相关技术的个人学习笔记。这些笔记涵盖了Python、PHP、Java、JavaScript和C这五种语言,以及可能涉及的各种框架和...

    高级程序员学习笔记.rar

    这些学习笔记涵盖了多个重要的IT技术领域,主要针对高级程序员,旨在深入理解和掌握各种编程语言、框架和数据库管理系统。以下是对每个主题的详细说明: 1. **C++**:C++是一种中级语言,由C语言发展而来,支持面向...

    良葛格Java JDK 5.0学习笔记

    - Socket通信:客户端和服务器端的创建与交互。 - URL和URLConnection:访问网络资源。 9. **反射机制**: - 类加载器:如何动态加载类。 - 获取类信息:Class类的使用,获取类名、构造器、方法和字段。 - ...

    Java-J2SE学习笔记(例子)

    J2SE(Java 2 Standard Edition)是Java平台的核心部分,提供了用于开发和运行桌面应用、服务器端应用以及网络应用的基础框架。 在这些学习笔记中,你可以期待以下关键知识点的详细讲解: 1. **Java基础**:从环境...

    CoreJava学习笔记.doc

    Java的Socket类和ServerSocket类简化了网络编程,使得创建客户端和服务器端的应用变得简单。理解TCP和UDP协议的区别,以及如何利用Java API实现网络通信是网络编程的关键。 通过深入学习和实践以上知识点,你将...

    IntraWeb 开发学习笔记

    这个框架允许开发者使用Delphi或C++Builder等RAD工具,以桌面应用程序的方式来开发Web应用,大大简化了Web开发流程。下面将详细介绍IntraWeb的关键知识点。 1. **控件与用户界面**: IntraWeb提供了丰富的服务器端...

    Java-J2SE学习笔记.rar

    Java-J2SE(Java Standard Edition)是Java平台的核心部分,主要面向桌面应用和服务器端开发。这份"Java-J2SE学习笔记"包含了丰富的Java基础知识,是初学者和进阶者的重要参考资料。以下将从几个关键知识点进行详细...

    java从零基础到精通的整个详细笔记(2012版)

    网络编程也是Java的一大特色,笔记会涵盖Socket编程,讲解如何创建客户端和服务器端的通信。 对于并发编程,笔记会介绍线程和进程的概念,如何创建和管理线程,以及同步和互斥机制,如synchronized关键字和wait/...

    CoreJava学习笔记

    ### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...

    javascript 学习笔记

    在实际应用中,JavaScript不仅可以用于浏览器端,还可以通过Node.js在服务器端运行。Node.js提供了一个非阻塞的I/O模型,使得JavaScript成为构建高性能网络应用的理想选择。此外,JavaScript还有大量的第三方库和...

    java学习笔记

    - Socket编程:创建客户端和服务器端的连接,实现数据传输。 - URL和URLConnection:访问网络资源,读取或写入数据。 8. **反射** - 动态类型检查:在运行时获取类的信息,如类名、方法名等。 - 动态实例化:在...

    嵌入式Linux 入门笔记Linux.pdf

    - **客户端与服务器端配置**:了解如何在服务器端共享文件夹,在客户端挂载这些共享。 **4. 应用程序编程实验** - **编程语言**:使用C/C++或其他支持的语言进行编程实践。 - **调试技巧**:学会使用`gdb`等调试...

    ArcGIS Server 读书笔记

    - **GIS 服务器端功能扩展**:使用 COM 和 .NET 语言。 - **桌面应用**:使用 COM、.NET、Java、C++ 等语言。 #### 五、ArcGIS Server 的优势 - **成本节省**:通过浏览器作为客户端,降低了多用户部署的成本。 - *...

    VC++读书笔记全部源代码

    - Winsock:使用Winsock API进行网络通信,实现客户端和服务器端的连接。 通过这些章节的学习,读者可以全面掌握VC++编程的基本技能,从基本语法到面向对象设计,再到高级主题如多线程和网络编程。这些源代码提供...

Global site tag (gtag.js) - Google Analytics