Symbian 网络编程API收藏
2010-09-06 08:09:00 来源:WEB开发网一个普通socket进行的读写通信操作,都是异步进行的,也就是说这样的操作要占用两个消息通道。如果socket也可以进行同步操作的话,那么我们其实并不需要指定过多的消息通道,因为同步操作的消息通道是由socket客户端-服务器框架来完成的。对于你的应用程序在同一个时间内会使用到多少个消息通道,这完全是由你来断定的,而在大多数情况下,我们要尽可能的减少同时请求的消息通道数。
如果我们不指定任何特定的值,那么系统会使用一个默认值作为消息通道个数的参数:KESockDefaultMessageSlots (0x08)。
预载入协议模块
socket服务组件载入协议协议模块的动作是动态进行的,当针对某一个协议的第一个socket被创建的时候,该协议模块在此时才会被载入。尽管如此,载入协议仍然是一件比较费时的操作,RSocketServ提供了一个StartProtocol()函数,来进行协议模块的预载入操作,调用该函数可以在socket连接请求的时候节省载入协议模块的时间。
如果你的应用程序需要在程序启动之初就载入协议模块,而并非需要连接的时候才进行载入,那么可以使用下面的函数范例来调用StartProtocol()方法:
void StartProtocol (TUint aFamily, TUint aSockType,
TUint aProtocol, TRequestStatus& aStatus);
StartProtocol()函数的参数有:协议族(例如,KAfInet),使用该协议的socket类型(例如,KSockStream),协议族中的协议标示(例如,KProtocolInetTcp),最后一个参数是异步调用的完成状态参数。这些参数的意义将会在下面做以简短介绍。
请注意,尽管StartProtocol()函数是一个异步服务,但是它却是一个在操作过程中不能被取消的操作。
使用RSocket类
RSocket代表了应用程序的一个socket连接,在一个应用程序中,每一个socket连接都是一个单独的RSocket的实例 。事实上,客户端应用程序的代码中使用更多的是RSocket类而并不是RSocketServ类。
RSocket是一个提供了许许多多服务的体积庞大的类,这些服务包括:
连接到服务,无论作为客户端还是服务端
设置或者查询自己的地址,或者查询远程地址S
从socket读取数据
向socket写入数据
其他更多...
在打开任何socket之前,我们必须有一个激活了的RSocketServ会话 。并且,在上述提到的任何服务进行操作之前,我们要确保
更多精彩
赞助商链接