symbian client/server的一点解释

很多人觉得client/server机制很复杂。其实不然。

server就集成两个类,一个CServer2, 一个CSession2。

client端继承自RSessionBase。

client和server通过所谓的session通信。

 

一般大家会有两个疑问:

1. session是什么,很神秘

2. 他们之间怎么通信的。

 

answer:

1. 其实呢session呢就是server知道client身份的一种方式。

我们仔细看RSessionBase的基类就会发现其实它就是一个句柄。一个标识符。就像一个身份证号一样的东西。

server通过client的这个标志来为不同的client服务。不然的话,A要的pissa送给了B岂不是麻烦了。

 

2. 他们在不同的进程中,怎么访问的呢?跨进程肯定要有kernel的参与了,

比如说我想发一段buffer给server,一般我们会告诉server,我的buffer放在了我的地址空间中的某个地方。

server接收到消息,一看buffer在你的地址空间中,我也没权利访问你的地址空间呀,于是它只能求助于kernel帮它把东西去回来。

 

在kernel对应一个DSession。client发送消息给server,需要kernel的介入。

kernel端有一个message slot用来存放所有的没有处理的消息。

 

client端要创建一个连接的时候,kerne在dobjectcon中找对应的server,如果没有启动,就启动server。

server紧接着会向kernel订阅消息。kernel接到client段的连接请求的时候,会发送消息到serve的消息队列中。

server处理建立session的消息,建立一个session。

同步执行的消息不是放在message slot中的,是放在线程的DThread中的。每一个RThread在kernel端都对应一个DThread。

 

我讲active object机制的时候说过DThread里面还有Request Semaphore 什么时候需要写一个server

 

1。多个client,如果只有一个人用,写个engine就好了

2。资源共享,多个client都要用到同一个资源。server可以实现对资源的保护

3。安全检查,server可以检查client段是否有这个capability来访问相应的资源

 

1. RSessionBase::SendReceive会调用Exec::SessionSendSync进入kernel模式

2. kernel中DSession对异步请求处理类似 GetAsyncMessage(); DSession::Send(aStatus);

3. kernel中DSession对同步请求处理类似 Get sync message from DThread DSession::Send(aStatus);

4. 调用DServer的成员,让server来处理,一般会把这个消息放到DServer的一个delivered queue里面。

5. 我们可以看出,这里面DSession相当于server的client,采用的都是异步方式。

 

所以无论是异步请求还是同步请求到DSession中都变为异步请求。区别在于异步请求的时候是从message slot里面取一个消息,而同步请求是从DThread中取消息发送给DServer。 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值