Symbian socket 网络编程方法
2010-03-18 20:59:00 来源:WEB开发网如果你的应用程序使用的是已经连接的socket,那么可以使用上面的函数来向远程主机发送数据。
和上面类似,该函数的第一个参数是包含了要向远程主机发送数据内容的字符串,该字符串的长度就是要发送数据的全部长度。
Send函数会在全部数据源发送完成之后,或者连接断开之后返回。
第二个函数Send()可以让调用者传递一个 TSockXfrLength类型的参数进来,以此来确定发送数据的长度,这样的话传输函数就不必以发送数据的内容的字符串长度来作为原数据的长度了。
上面两种函数冲在,都提供了一个TUint someFlags参数,该参数是用来定义和协议相关的标示位的,针对不同协议会有不同的协议标示定义。
正如前面提到的 SendTo()函数,上面第二个方法中的TSockXfrLength类型的参数,会在异步调用请求完成的时候,被赋予已经发送的数据的长度。
请注意,因为我们是在向已经连接的socket发送数据,所以我们并不需要指定目标主机地址。对于已经连接的socket来说,在 socket打开的时候,远程主机地址就已经被指定好了。
我们目前所提供的函数,可能对于应用程序的开发者来说还是有些过于复杂,并且更深入一些。
对于下面提供的Write函数来说,所有的标志标示符都被去除,他们将使用默认值0。另外 TSockXfrLength也被去除了,这样的话,发送函数就仅仅从发送数据内容的字符串中获得发送数据的长度了。
void Write(const TDesC8& aDesc, TRequestStatus& aStatus);
除了上面说到的两个不同点之外,其它部分都是和Send()函数几乎没有差别的。
注意,这里提到的发送数据的函数,都仅仅适用于已经连接的socket。
总结
本文提供了一些Symbian OS的socket服务编写说明,以及如何将通信功能加入到应用程序中。
Socket服务组件通过两个主类 RSocketServ和RSocket,提供了一个近乎标准Socket API的接口。 RSocketServ是连接到sockets服务的回话进程,而RSocket是连接到sockets服务的子会话。通过这两个类,你可以实现面向连接或者无连接的socket。主机解析服务可以通过RHostResolver类来完成。
Socket服务组件的设计是基于协议模块的,不同的插件模块实现了在Socket通信中的不同协议的细节部分。这种设计可以使Socket服务组件可以支持未来的通信协议,而并不对服务组件进行升级。到Symbian
更多精彩
赞助商链接