Symbian OS sockets API
2010-07-22 01:42:00 来源:WEB开发网RNetDatabase: 这个类用来提供网络数据库访问的接口。
RSocket, RHostResolver & RNetDatabase 均表示了一个给定的应用程序与socket服务组件之间进行的会话下的子会话,而应用程序与socket服务组件之间的会话就是一个RSocketServer的实例。
sockets服务器的主要类
socket服务组件提供了两个主类,供他的客户端访问内部的API。
RSocketServ: 在每个应用程序线程中,只要需要连接socket请求,他就必须使用一个本类的实例,来为其他连接(会话)提供socket服务。
RSocket: 每一个需要使用socket的应用程序线程,同样也需要一个或多个RSocket对象,这些对象就是子会话了。
下面的两个部分将会介绍会话和子会话类(RSocketServ 和 RSocket)的详细内容。
使用RSocketServ类
RSocketServ类扮演了一个十分重要的角色,因为它是客户端应用程序与socket服务组建之间的连接会话。
但是,客户端应用程序并不直接使用这个类来进行数据的发送和接收,或者创建一个远程通信端点;要完成这些任务的话,使用的是RSocket类,这个类将会在稍后进行介绍。
RSocketServ可以让客户端应用程序来向socket服务组件发起一些查询,查询的内容包括服务器支持的协议个数以及支持哪些协议,每个支持协议的具体信息等等。
希望使用socket的客户端应用程序,都将需要自己创建一个RSocketServ类的实例对象,用这个对象来表示该客户端应用程序和 socket服务之间的会话。每一个独立的socket连接,都是一个独立的RSocket类的实例对象。可以说,在一个客户端应用程序中,该程序的 RSocketServ类对象就是所有的RSocket类对象的容器。
RSocketServ类的两个常用函数就是Connect()和StandardProtocol()。
建立一个连接到sockets服务的会话
使用Connect()方法,应用程序就可以建立与socket服务之间的一个会话。它仅仅使用一个参数--该会话所提供的消息通道的个数。
TInt Connect (TUint aMessageSlots);
消息数参数被用来限定应用程序向socket服务所同时并发的异步操作的请求通道数。每一个同步请求都将占用一个消息通道,并且请求准备中的异步操作也将占用一个消息通道。
一个普通socket进行的读写通信操作,都是异步进行的,也就是说这样的操作要占用两个消息通道。如果socket也可以进行同步操作的话,那么我们其实并不需要指定过多的消息通道,因为同步操作的消息通道是由socket客户端-服务器框架来完成的。对于你的应用程序在同一个时间内会使用到多少个消息通道,这完全是由你来断定的,而在大多数情况下,我们要尽可能的减少同时请求的消息通道数。
更多精彩
赞助商链接