WEB开发网
开发学院手机开发Symbian 开发 Symbian OS sockets API 阅读

Symbian OS sockets API

 2010-07-22 01:42:00 来源:WEB开发网   
核心提示:第二个Recv()函数的重载可以显式地获取接收数据的长度,该长度被保存在了类型为TSockXfrLength的函数参数中,Symbian OS sockets API(14),这样的话判断接收数据长度就不必关联接收字符串的长度了,最后一个函数RecvOneOrMore(),发送数据使用未连接的sockets下面的函数是

第二个Recv()函数的重载可以显式地获取接收数据的长度,该长度被保存在了类型为TSockXfrLength的函数参数中,这样的话判断接收数据长度就不必关联接收字符串的长度了。

最后一个函数RecvOneOrMore(),与Recv()不同,这个函数是会在函数接收到任何数据之后立刻返回的。言外之意,调用 RecvOneOrMore()函数会接收到1--n个字节,其中n就是目标字符串的长度。同样地,如果连接被断开,RecvOneOrMore()函数仍然会立刻返回,并且不会返回任何数据。

虽然是已连接的socket,但是在发送过程中数据流并不一定都是物理上连续的,尽管从逻辑上看他们是流式的。所以,即便是使用已连接的socket,仍然应用程序--socket的调用者--来进行判断数据流的结束与否,边界切分等工作。

注意,由于我们使用的是已连接的socket,那么我们不需要指定接收收据的socket地址,因为已连接的socket是在连接动作发生的时候就已经指定好了传输目标主机地址信息了。

在这一部分的前半部分,我们介绍的各种函数都是具有比较高的复杂度的,可能对于应用程序开发者来说并不会具有特别的吸引力。

特别地,我们可以注意到所有的函数都以一个参数TUint aFlags作为标示作用,到目前为止还没有对他进行讨论。这个参数的作用是让应用程序可以选择特定协议的指定属性,以此来设置协议接收处理数据的方式。

下面介绍的另外一个函数Read(),他将默认标示参数设置为0,并且也去掉了TSockXfrLength类型的参数。如果使用该函数,那么接收数据的长度就只能通过接收目标字符串的长度来获得了。

void Read(TDes8& aDesc, TRequestStatus& aStatus);

除了上述的两个例外,这个Read()函数的操作效果就基本同Recv()一样了。

注意,这个函数仅仅在已连接的socket通信中是可以使用的。

发送数据

使用未连接的sockets

下面的函数是RSocket中用来向未连接的socket发送数据的。

void SendTo(const TDesC8& aDesc, TSockAddr& anAddr, TUint flags, TRequestStatus& aStatus); void SendTo(const TDesC8& aDesc, TSockAddr& anAddr, TUint flags, TRequestStatus& aStatus, TSockXfrLength& aLen);

如果应用程序连接的是无连接的socket,那么就要使用RSocket::SendTo()函数来向远程主机发送数据。

上一页  9 10 11 12 13 14 15 16  下一页

Tags:Symbian OS sockets

编辑录入:coldstar [复制链接] [打 印]
赞助商链接