Symbian socket 网络编程方法
2010-03-18 20:59:00 来源:WEB开发网这里我们需要注意的重要一点是,实际上地址转换这项工作并不是客户端设备进行的,而是待转换地址被发送到了另外一台主机,由另外一台主机进行的解析。所以我们在建立一个使用TPC/IP协议建立连接的时候,就必须提供一个DNS服务器地址,否则一切连接将几乎无法进行。
在 socket代码中使用活动对象(active objects)
计算机网络通信,在一般情况下都是使用异步操作的。下面我们先放下谈论已久的socket通信系统,来看看一个打电话过程是如何进行的,这样会有助于我们理解下面要讨论的问题。
当一个朋友给你打电话,你的电话机会收到电话打入的电信号,它在收到这个信号后就开始振铃,然后你听到了铃声之后就拿起听筒,开始进行通话,直到挂断电话此次通话结束。
当等待电话呼叫的时候,我们可以进行其他任何事情,并不会对我们的生活造成影响。与此的,假如你的朋友给你发送了一个是十分困难的问题让你帮助解决,也许这是一个相当大的难题,你要花一些时间来考虑或者解决,当这个时候,你的朋友可以利用你考虑或者解决的时间,进行他自己的其他活动。
上面的电话通信例子,就是一个很好的一部通信系统的例子。
当我们使用socket来在两台计算机之间传输数据的时候,我们看到的是一个类似上面打电话例子的异步模型。
在一个使用socket进行网络通信的应用程序中,上述异步通信的事件包括:
连接, 断开连接以及确认请求连接的要求
接受数据(因为我们并不知道有多少数据要发送过来,所以这个过程是异步的)
发出数据(因为对于应用程序层来说,我们并不知道底层的硬件需要多长时间才能够将数据发出,所以这个过程也是异步的)
其他,比如载入协议模块之类的,看似并不是十分明显的异步操作
因为我们需要在应用程序中处理这些异步事件,所以我们需要用到Symbian OS的活动对象(Active objects, AOs)来解决这些问题。
活动对象的特点有:
使得应用程序开发者可以很容易的控制对象的生存周期
在一个单线程程序中完成并非严格意义上的多任务操作
为Symbian系统提供了效率较高的单线程多任务解决方案,而并不是真正地使用多线程。
在Symbian系统中,所有的线程都是通过一个或者多个活动对象,使用一个激活的进度管理器来进行高效率的外部事件处理。
更多精彩
赞助商链接