Symbian OS sockets API
2010-07-22 01:42:00 来源:WEB开发网这个函数中的第一个参数是包含了要发送数据内容的字符串,而要发送内容的长度,则是由字符串的长度决定的。
当数据发送完成的时候,调用该函数的应用程序将会得到通知。如果你使用的是带有TSockXfrLength类型参数的函数重载,那么已发送的数据的长度,将会在完成的时候被保存在该参数中。
第二个参数包含了要发送数据的远程主机的地址,这个地址的格式应该符合socket被打开的时候制定的协议所支持的地址格式,比如,如果我们选择了TCP/IP协议,那么我们就需要使用TInetAddr作为发送主机的地址。
第三个参数,TUint类型的标志位,它是一个和协议相关的位标识符,定义了某些需要向协议模块中传递参数的标志信息。
需要注意的是,在一个socket连接中,在任意时间最多仅有一个发送操作时处于等待状态的。
上述介绍的函数,仅仅可用于无连接的数据报socket使用。
使用连接的sockets
下面的函数,是RSocket提供的用来向一个已经连接的socket发送数据的。
void Send(const TDesC8& aDesc, TUint someFlags, TRequestStatus& aStatus); void Send(const TDesC8& aDesc, TUint someFlags, TRequestStatus& aStatus, TSockXfrLength& aLen);
如果你的应用程序使用的是已经连接的socket,那么可以使用上面的函数来向远程主机发送数据。
和上面类似,该函数的第一个参数是包含了要向远程主机发送数据内容的字符串,该字符串的长度就是要发送数据的全部长度。
Send函数会在全部数据源发送完成之后,或者连接断开之后返回。
第二个函数Send()可以让调用者传递一个TSockXfrLength类型的参数进来,以此来确定发送数据的长度,这样的话传输函数就不必以发送数据的内容的字符串长度来作为原数据的长度了。
上面两种函数冲在,都提供了一个TUint someFlags参数,该参数是用来定义和协议相关的标示位的,针对不同协议会有不同的协议标示定义。
正如前面提到的SendTo()函数,上面第二个方法中的TSockXfrLength类型的参数,会在异步调用请求完成的时候,被赋予已经发送的数据的长度。
请注意,因为我们是在向已经连接的socket发送数据,所以我们并不需要指定目标主机地址。对于已经连接的socket来说,在socket打开的时候,远程主机地址就已经被指定好了。
更多精彩
赞助商链接