diff -r 4816d766a08a -r f345bda72bc4 Symbian3/PDK/Source/GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita
--- a/Symbian3/PDK/Source/GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita Tue Mar 30 11:42:04 2010 +0100
+++ b/Symbian3/PDK/Source/GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita Tue Mar 30 11:56:28 2010 +0100
@@ -1,12 +1,12 @@
-
-
-
-
-
+
+
+
+
+
Using the Domain Name Resolution TutorialThis topic describes how to use the domain name resolution. Required background You must be familiar with RHostResolver() to understand this tutorial. The RHostResolver() function is defined in es_sock.h. Types and constants specific to TCP/IP are used in RHostResolver() arguments are defined in in_sock.h.
Introduction The TCP/IP stack contains a Domain Name Service (DNS). The client programs conducts DNS queries through the generic host name resolution interface RHostResolver, specifying protocol-specific behaviour through the argument values. This tutorial describes how the RHostResolver() functions are used for DNS.
Procedure The RHostResolver::Open() function starts the DNS access.
The parameter values are as follows:
Parameter
Description
addrFamily
Always KAfInet
aProtocol
Always KProtocolInetUdp
DNS Query example When a query is made, the protocol takes the following sequence of actions:
Searches the local HOSTS file, if it exists. The hosts file is stored in the \private\10000882\ directory.
If an answer is not found, it checks the DNS cache. The protocol queries the DNS server using a UDP socket. If there is no current connection, a dial-up connection is called.
If an answer is found, the answer is added to the cache.
Note: The cache entries are held continuously while the client RHostResolver object is open, for TTL 0 records. The client queries the RHostResolver object to get the latest records.
Note: The DNS server used is managed by PPP to establish a dial-up connection, or configured by the user in ISP settings.
The RHostResolver::GetByName() or RHostResolver::GetByAddress() can be called asynchronously, so that the application can select the program and the data when it is required. For more information see Next Result.
Resolve name
Use RHostResolver::GetByName() to resolve a symbolic name to an IP address. The parameters are as follows:
Parameter
Description
aName
The symbolic name to resolve.
Note: If you pass the local host name or a null descriptor the result is the address of the network interface. The RHostResolver::GetHostName() returns the local host name.
aResult
Returns the result of the name resolution. Unpack the TNameEntry to get a TNameRecord with the following members:
iName: the value of the passed aName
iAddr: the address information. Assign the iAddr to TInetAddr to get the IP address.
iFlags: a bitmask of TNameRecordFlags flags.
Get name
Use RHostResolver::GetByAddress() to get an IP address from a symbolic name. The parameters are as follows:
Parameter
Description
anAddr
A TInetAddr specifies the IP address to use.
Note: If you pass a null address or an address that matches the primary network interface, the local host name is returned.
aResult
Returns the result of the name resolution. Unpack the TNameEntry to get a TNameRecord with the following members:
iName: the symbolic name
iAddr: the value of the passed anAddr
iFlags: a bitmask of TNameRecordFlags flags.
Next result
The Next() function finds more answers after an initial GetByName() or GetByAddress() query.
For GetByName(), the matching A record (IP address) is returned first. Calls to Next() return any further CNAME (alias) or A records. CNAME records have the IP address set to 0 and the EDnsAlias flag set.
For GetByAddress(), the first matching PTR record (domain name) is returned first. Calls to Next() return any further PTR records.
Note: The Next() can be called synchronously, because all information is retrieved from a local buffer that was written by the initial query.
Local host
RHostResolver::GetHostName() and RHostResolver::SetHostName() get and set the name of the local host.
\ No newline at end of file