WEB开发网
开发学院手机开发Symbian 开发 Symbian 网络编程API收藏 阅读

Symbian 网络编程API收藏

 2010-09-06 08:09:00 来源:WEB开发网   
核心提示:private:RSocketServ iSession;RSocket iListen, iSocket;CRx* iRxAO; // 用于接收数据的活动对象CTx* iTxAO; // 用于发送数据的活动对象};请注意,在成员变量中有两个socket,Symbian 网络编程API收藏(10),一个是用来监听和连接

private:

RSocketServ iSession;

RSocket iListen, iSocket;

CRx* iRxAO; // 用于接收数据的活动对象

CTx* iTxAO; // 用于发送数据的活动对象

};

请注意,在成员变量中有两个socket,一个是用来监听和连接的,而另外一个是用来处理和客户端之间进行数据的传输的。

在这个类的定义中,还有两个活动对象,他们是iRxAO和iTxAO。这两个活动对象用来在连接到服务之后异步地、分别地处理数据的发送和接收工作。

(对上面已经定义的类而言,这个类仅仅接收一个客户端连接,那么请你不要对自己的创造力作任何限制地去想象和学习一下吧,你可以以这个类定义为基础,将他扩展为接收多个客户端连接的服务器吧!)

下面我们来看看连接过程是如何实现的。

做好接收客户端连接的准备

首先,在我们的服务器没有进行服务接入请求之前,我们要先创建两个socket,创建方法如下所示:

// Need to use two sockets - one to listen for

// an incoming connection.

err = iListen.Open(iSession, KAfInet,KSockStream, KUndefinedProtocol);

User::LeaveIfError(err);

// The second (blank) socket is required to

// build the connection & transfer data.

err = iSocket.Open(iSession);

User::LeaveIfError(err);

一个socket叫做iListen,他扮演的就是‘监听者’的角色,用来监听是否有来自客户端的接入请求。iListen是一个和协议流关联的对象,在本例中这个协议就是TCP协议,因为我们使用的是Internet地址格式。

另外一个socket,叫做iSocket,在现在是被构造为空socket的,它仅仅在客户端连接请求的时候才会被准备好进入工作状态。这个socket就是用来处理来自客户端的任何请求,并且进行数据传输工作的。

那么下面,监听socket就可以去进行监听客户端连接请求的工作了。

请注意上面例子中使用的两个不同的RSocket::Open()函数的多态。

其中第一个,用在iListen成员变量的,它是用来进行客户端请求连接监听的,所以它需要一个本地地址,只有这样连接数据才能本正确地路由到该对象。

要设定本地地址,我们需要将一个地址和一个socket进行绑定(bind)操作:

上一页  5 6 7 8 9 10 11 12 13 14 15  下一页

Tags:Symbian 网络编程 API

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