Symbian socket 网络编程方法
2010-03-18 20:59:00 来源:WEB开发网在进行任何主机地址解析服务之前,我们要打开一个RHostResolver类的实例。正如前面所提到过的,因为主机解析服务类是一个子会话类,所以在调用RHostResolver::Open()函数之前,该子会话类必须关联一个 socket服务组件的服务器会话对象实例。
TInt Open(RSocketServ& aSocketServer, TUint anAddrFamily, TUint aProtocol);
下一步,我们将会根据上面所示的函数原形,制定我们希望用哪个地址类型来解析的主机地址,地址类型应该是和传递给RSocket::Open()函数的参数一致的。
最后,我们还需要指定一个协议来进行主机地址解析服务。如果之前选择的地址类型是协议无关类型的,那么我们可以在这里指定 KUndefinedProtocol。
其他的RHostResolver类提供的函数如下所示:
TInt GetByName(const TDesC& aName, TNameEntry& aResult); TInt GetByAddress(const TSockAddr& anAddr, TNameEntry& aResult); TInt GetHostName(TDes& aName); TInt SetHostName(const TDesC& aName); // sync only TInt Next(TNameEntry& aResult);
这些函数中的大多数都是可以见名知意的;不过Next()函数例外,我们来进行一些解释:对于有些协议来说,GetByName()和GetByAddress()函数可能会一次找到不止一个结果,比如地址假名被允许的时候。如果这样的话,我们就需要调用Next()函数来返回下一个地址结果。
域名服务(DNS)
域名解析服务(Domain Name Service,DNS)是TCP/IP协议所提供的主机解析服务。
一个标准的DNS查询一般由以下三个步骤组成:
一个在某一个网络硬件设备(例如一块以太网卡)设备上运行的客户端应用程序,将自己的查询主机请求发送给网络上的另外一台主机--DNS服务器。
DNS服务器将查询请求进行查询,查询是在庞大的数字地址与主机名称对应列表中进行的,查询到的结果将会被转换成不同的地址格式。
DNS服务器将地址发送回客户端。
请注意,DNS服务可以将文本格式的地址(例如www.symbian.com)解析为数值格式地址(例如 212.134.93.203),或者将数值地址(204.71.202.160)解析为文本格式的地址——www.yahoo.com。
互联网服务提供商一般都提供了很多DNS服务器(一般都不只一台)来供他们的客户使用。如果没有这些服务器,那么使用互联网对于普通用户来说将是一场灾难。如果没有DNS的话我们将不得不记住我们感兴趣的web站点的32位数字地址,或者使用十分十分冗长难记的地址去给其他人发电子邮件。
更多精彩
赞助商链接