WEB开发网
开发学院手机开发Symbian 开发 Symbian socket 网络编程方法 阅读

Symbian socket 网络编程方法

 2010-03-18 20:59:00 来源:WEB开发网   
核心提示:一个活动对象,在一个时间内只能处理一个事件源,Symbian socket 网络编程方法(10),在实际情况中,活动对象通常也都是被设计为处理一类特定事件的,iListen是一个和协议流关联的对象,在本例中这个协议就是TCP协议,在稍后的代码示例中,这些代码因为有不同的需求所以使用了不止一个活动对象

一个活动对象,在一个时间内只能处理一个事件源。在实际情况中,活动对象通常也都是被设计为处理一类特定事件的。

在稍后的代码示例中,这些代码因为有不同的需求所以使用了不止一个活动对象,无论是客户端还是服务器程序,都使用了不止三个活动对象。其中一个用来处理连接机制,一个用来接收数据,另外一个用来发送数据。

下面我们就来看看如合利用活动对象来处理客户端和服务器之间进行socket流式连接的范例。

代码示例: 连接sockets

下面一部分就是借助代码的演示来向大家说明如何利用活动对象进行socket连接。这写代码段是从一个进行监听接入连接的‘服务器’和发送连接请求到服务器的‘客户端’ 程序中提取出来的。

服务‘监听’类的定义

下面的代码是从一个完整的进行‘监听’(listening)的服务器类定义中取出的一部分。

class CModel : public CActive { public: void StartEngineL(void); private: void RunL(void); void DoCancel (void); 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地址格式。

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

Tags:Symbian socket 网络编程

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