diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /doc/html/qdns.html | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'doc/html/qdns.html')
-rw-r--r-- | doc/html/qdns.html | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/doc/html/qdns.html b/doc/html/qdns.html new file mode 100644 index 0000000..1b5934c --- /dev/null +++ b/doc/html/qdns.html @@ -0,0 +1,334 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/src/network/qdns.cpp:1597 --> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>QDns Class</title> +<style type="text/css"><!-- +fn { margin-left: 1cm; text-indent: -1cm; } +a:link { color: #004faf; text-decoration: none } +a:visited { color: #672967; text-decoration: none } +body { background: #ffffff; color: black; } +--></style> +</head> +<body> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> +<tr bgcolor="#E5E5E5"> +<td valign=center> + <a href="index.html"> +<font color="#004faf">Home</font></a> + | <a href="classes.html"> +<font color="#004faf">All Classes</font></a> + | <a href="mainclasses.html"> +<font color="#004faf">Main Classes</font></a> + | <a href="annotated.html"> +<font color="#004faf">Annotated</font></a> + | <a href="groups.html"> +<font color="#004faf">Grouped Classes</font></a> + | <a href="functions.html"> +<font color="#004faf">Functions</font></a> +</td> +<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>QDns Class Reference<br><small>[<a href="network.html">network module</a>]</small></h1> + +<p>The QDns class provides asynchronous DNS lookups. +<a href="#details">More...</a> +<p><tt>#include <<a href="qdns-h.html">qdns.h</a>></tt> +<p>Inherits <a href="qobject.html">QObject</a>. +<p><a href="qdns-members.html">List of all member functions.</a> +<h2>Public Members</h2> +<ul> +<li class=fn>enum <a href="#RecordType-enum"><b>RecordType</b></a> { None, A, Aaaa, Mx, Srv, Cname, Ptr, Txt }</li> +<li class=fn><a href="#QDns"><b>QDns</b></a> ()</li> +<li class=fn><a href="#QDns-2"><b>QDns</b></a> ( const QString & label, RecordType rr = A )</li> +<li class=fn><a href="#QDns-3"><b>QDns</b></a> ( const QHostAddress & address, RecordType rr = Ptr )</li> +<li class=fn>virtual <a href="#~QDns"><b>~QDns</b></a> ()</li> +<li class=fn>virtual void <a href="#setLabel"><b>setLabel</b></a> ( const QString & label )</li> +<li class=fn>virtual void <a href="#setLabel-2"><b>setLabel</b></a> ( const QHostAddress & address )</li> +<li class=fn>QString <a href="#label"><b>label</b></a> () const</li> +<li class=fn>virtual void <a href="#setRecordType"><b>setRecordType</b></a> ( RecordType rr = A )</li> +<li class=fn>RecordType <a href="#recordType"><b>recordType</b></a> () const</li> +<li class=fn>bool <a href="#isWorking"><b>isWorking</b></a> () const</li> +<li class=fn>QValueList<QHostAddress> <a href="#addresses"><b>addresses</b></a> () const</li> +<li class=fn>QValueList<MailServer> <a href="#mailServers"><b>mailServers</b></a> () const</li> +<li class=fn>QValueList<Server> <a href="#servers"><b>servers</b></a> () const</li> +<li class=fn>QStringList <a href="#hostNames"><b>hostNames</b></a> () const</li> +<li class=fn>QStringList <a href="#texts"><b>texts</b></a> () const</li> +<li class=fn>QString <a href="#canonicalName"><b>canonicalName</b></a> () const</li> +<li class=fn>QStringList <a href="#qualifiedNames"><b>qualifiedNames</b></a> () const</li> +</ul> +<h2>Signals</h2> +<ul> +<li class=fn>void <a href="#resultsReady"><b>resultsReady</b></a> ()</li> +</ul> +<hr><a name="details"></a><h2>Detailed Description</h2> + + +The QDns class provides asynchronous DNS lookups. + +<p> + +<p> Both Windows and Unix provide synchronous DNS lookups; Windows +provides some asynchronous support too. At the time of writing +neither operating system provides asynchronous support for +anything other than hostname-to-address mapping. +<p> QDns rectifies this shortcoming, by providing asynchronous caching +lookups for the record types that we expect modern GUI +applications to need in the near future. +<p> The class is <em>not</em> straightforward to use (although it is much +simpler than the native APIs); <a href="qsocket.html">QSocket</a> provides much easier to use +TCP connection facilities. The aim of QDns is to provide a correct +and small API to the DNS and nothing more. (We use "correctness" +to mean that the DNS information is correctly cached, and +correctly timed out.) +<p> The API comprises a constructor, functions to set the DNS node +(the domain in DNS terminology) and record type (<a href="#setLabel">setLabel</a>() and +<a href="#setRecordType">setRecordType</a>()), the corresponding get functions, an <a href="#isWorking">isWorking</a>() +function to determine whether QDns is working or reading, a +<a href="#resultsReady">resultsReady</a>() signal and query functions for the result. +<p> There is one query function for each RecordType, namely +<a href="#addresses">addresses</a>(), <a href="#mailServers">mailServers</a>(), <a href="#servers">servers</a>(), <a href="#hostNames">hostNames</a>() and <a href="#texts">texts</a>(). +There are also two generic query functions: <a href="#canonicalName">canonicalName</a>() +returns the name you'll presumably end up using (the exact meaning +of this depends on the record type) and <a href="#qualifiedNames">qualifiedNames</a>() returns a +list of the fully qualified names <a href="#label">label</a>() maps to. +<p> <p>See also <a href="qsocket.html">QSocket</a> and <a href="io.html">Input/Output and Networking</a>. + +<hr><h2>Member Type Documentation</h2> +<h3 class=fn><a name="RecordType-enum"></a>QDns::RecordType</h3> + +<p> This enum type defines the record types QDns can handle. The DNS +provides many more; these are the ones we've judged to be in +current use, useful for GUI programs and important enough to +support right away: +<ul> +<li><tt>QDns::None</tt> - No information. This exists only so that QDns can +have a default. +<li><tt>QDns::A</tt> - IPv4 addresses. By far the most common type. +<li><tt>QDns::Aaaa</tt> - IPv6 addresses. So far mostly unused. +<li><tt>QDns::Mx</tt> - Mail eXchanger names. Used for mail delivery. +<li><tt>QDns::Srv</tt> - SeRVer names. Generic record type for finding +servers. So far mostly unused. +<li><tt>QDns::Cname</tt> - Canonical names. Maps from nicknames to the true +name (the canonical name) for a host. +<li><tt>QDns::Ptr</tt> - name PoinTeRs. Maps from IPv4 or IPv6 addresses to hostnames. +<li><tt>QDns::Txt</tt> - arbitrary TeXT for domains. +</ul><p> We expect that some support for the +<a href="http://www.dns.net/dnsrd/rfc/rfc2535.html">RFC-2535</a> +extensions will be added in future versions. + +<hr><h2>Member Function Documentation</h2> +<h3 class=fn><a name="QDns"></a>QDns::QDns () +</h3> +Constructs a DNS query object with invalid settings for both the +label and the search type. + +<h3 class=fn><a name="QDns-2"></a>QDns::QDns ( const <a href="qstring.html">QString</a> & label, <a href="qdns.html#RecordType-enum">RecordType</a> rr = A ) +</h3> +Constructs a DNS query object that will return record type <em>rr</em> +information about <em>label</em>. +<p> The DNS lookup is started the next time the application enters the +event loop. When the result is found the signal <a href="#resultsReady">resultsReady</a>() is +emitted. +<p> <em>rr</em> defaults to <a href="#RecordType-enum">A</a>, IPv4 addresses. + +<h3 class=fn><a name="QDns-3"></a>QDns::QDns ( const <a href="qhostaddress.html">QHostAddress</a> & address, <a href="qdns.html#RecordType-enum">RecordType</a> rr = Ptr ) +</h3> +Constructs a DNS query object that will return record type <em>rr</em> +information about host address <em>address</em>. The label is set to the +IN-ADDR.ARPA domain name. This is useful in combination with the +<a href="#RecordType-enum">Ptr</a> record type (e.g. if you want to look up a hostname for a +given address). +<p> The DNS lookup is started the next time the application enters the +event loop. When the result is found the signal <a href="#resultsReady">resultsReady</a>() is +emitted. +<p> <em>rr</em> defaults to <a href="#RecordType-enum">Ptr</a>, that maps addresses to hostnames. + +<h3 class=fn><a name="~QDns"></a>QDns::~QDns ()<tt> [virtual]</tt> +</h3> +Destroys the DNS query object and frees its allocated resources. + +<h3 class=fn><a href="qvaluelist.html">QValueList</a><QHostAddress> <a name="addresses"></a>QDns::addresses () const +</h3> +Returns a list of the addresses for this name if this QDns object +has a <a href="#recordType">recordType</a>() of <a href="#RecordType-enum">QDns::A</a> or <a href="#RecordType-enum">QDns::Aaaa</a> and the answer +is available; otherwise returns an empty list. +<p> As a special case, if <a href="#label">label</a>() is a valid numeric IP address, this +function returns that address. +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qvaluelist.html">QValueList</a><QHostAddress> list = myDns.addresses(); + QValueList<QHostAddress>::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + +<p> +<h3 class=fn><a href="qstring.html">QString</a> <a name="canonicalName"></a>QDns::canonicalName () const +</h3> +Returns the canonical name for this DNS node. (This works +regardless of what <a href="#recordType">recordType</a>() is set to.) +<p> If the canonical name isn't known, this function returns a null +string. +<p> The canonical name of a DNS node is its full name, or the full +name of the target of its CNAME. For example, if l.trolltech.com +is a CNAME to lillian.troll.no, and the search path for QDns is +"trolltech.com", then the canonical name for all of "lillian", +"l", "lillian.troll.no." and "l.trolltech.com" is +"lillian.troll.no.". + +<h3 class=fn><a href="qstringlist.html">QStringList</a> <a name="hostNames"></a>QDns::hostNames () const +</h3> +Returns a list of host names if the record type is <a href="#RecordType-enum">Ptr</a>. +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qstringlist.html">QStringList</a> list = myDns.hostNames(); + QStringList::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + +<p> +<h3 class=fn>bool <a name="isWorking"></a>QDns::isWorking () const +</h3> +Returns TRUE if QDns is doing a lookup for this object (i.e. if it +does not already have the necessary information); otherwise +returns FALSE. +<p> QDns emits the <a href="#resultsReady">resultsReady</a>() signal when the status changes to FALSE. + +<p>Example: <a href="mail-example.html#x705">network/mail/smtp.cpp</a>. +<h3 class=fn><a href="qstring.html">QString</a> <a name="label"></a>QDns::label () const +</h3> + +<p> Returns the domain name for which this object returns information. +<p> <p>See also <a href="#setLabel">setLabel</a>(). + +<h3 class=fn><a href="qvaluelist.html">QValueList</a><MailServer> <a name="mailServers"></a>QDns::mailServers () const +</h3> +Returns a list of mail servers if the record type is <a href="#RecordType-enum">Mx</a>. The +class <tt>QDns::MailServer</tt> contains the following public variables: +<ul> +<li> <a href="qstring.html">QString</a> QDns::MailServer::name +<li> Q_UINT16 QDns::MailServer::priority +</ul> +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qvaluelist.html">QValueList</a><QDns::MailServer> list = myDns.mailServers(); + QValueList<QDns::MailServer>::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + +<p> +<p>Example: <a href="mail-example.html#x706">network/mail/smtp.cpp</a>. +<h3 class=fn><a href="qstringlist.html">QStringList</a> <a name="qualifiedNames"></a>QDns::qualifiedNames () const +</h3> + +<p> Returns a list of the fully qualified names <a href="#label">label</a>() maps to. +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qstringlist.html">QStringList</a> list = myDns.qualifiedNames(); + QStringList::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + +<p> +<h3 class=fn><a href="qdns.html#RecordType-enum">RecordType</a> <a name="recordType"></a>QDns::recordType () const +</h3> + +<p> Returns the record type of this DNS query object. +<p> <p>See also <a href="#setRecordType">setRecordType</a>() and <a href="#RecordType-enum">RecordType</a>. + +<h3 class=fn>void <a name="resultsReady"></a>QDns::resultsReady ()<tt> [signal]</tt> +</h3> + +<p> This signal is emitted when results are available for one of the +<a href="#qualifiedNames">qualifiedNames</a>(). + +<p>Example: <a href="mail-example.html#x707">network/mail/smtp.cpp</a>. +<h3 class=fn><a href="qvaluelist.html">QValueList</a><Server> <a name="servers"></a>QDns::servers () const +</h3> +Returns a list of servers if the record type is <a href="#RecordType-enum">Srv</a>. The class +<tt>QDns::Server</tt> contains the following public variables: +<ul> +<li> <a href="qstring.html">QString</a> QDns::Server::name +<li> Q_UINT16 QDns::Server::priority +<li> Q_UINT16 QDns::Server::weight +<li> Q_UINT16 QDns::Server::port +</ul> +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qvaluelist.html">QValueList</a><QDns::Server> list = myDns.servers(); + QValueList<QDns::Server>::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + + +<h3 class=fn>void <a name="setLabel"></a>QDns::setLabel ( const <a href="qstring.html">QString</a> & label )<tt> [virtual]</tt> +</h3> +Sets this DNS query object to query for information about <em>label</em>. +<p> This does not change the <a href="#recordType">recordType</a>(), but its <a href="#isWorking">isWorking</a>() status +will probably change as a result. +<p> The DNS lookup is started the next time the application enters the +event loop. When the result is found the signal <a href="#resultsReady">resultsReady</a>() is +emitted. + +<h3 class=fn>void <a name="setLabel-2"></a>QDns::setLabel ( const <a href="qhostaddress.html">QHostAddress</a> & address )<tt> [virtual]</tt> +</h3> +This is an overloaded member function, provided for convenience. It behaves essentially like the above function. +<p> Sets this DNS query object to query for information about the host +address <em>address</em>. The label is set to the IN-ADDR.ARPA domain +name. This is useful in combination with the <a href="#RecordType-enum">Ptr</a> record type +(e.g. if you want to look up a hostname for a given address). + +<h3 class=fn>void <a name="setRecordType"></a>QDns::setRecordType ( <a href="qdns.html#RecordType-enum">RecordType</a> rr = A )<tt> [virtual]</tt> +</h3> +Sets this object to query for record type <em>rr</em> records. +<p> The DNS lookup is started the next time the application enters the +event loop. When the result is found the signal <a href="#resultsReady">resultsReady</a>() is +emitted. +<p> <p>See also <a href="#RecordType-enum">RecordType</a>. + +<h3 class=fn><a href="qstringlist.html">QStringList</a> <a name="texts"></a>QDns::texts () const +</h3> +Returns a list of texts if the record type is <a href="#RecordType-enum">Txt</a>. +<p> Note that if you want to iterate over the list, you should iterate +over a copy, e.g. +<pre> + <a href="qstringlist.html">QStringList</a> list = myDns.texts(); + QStringList::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>(); + while( it != list.<a href="qvaluelist.html#end">end</a>() ) { + myProcessing( *it ); + ++it; + } + </pre> + + +<!-- eof --> +<hr><p> +This file is part of the <a href="index.html">Qt toolkit</a>. +Copyright © 1995-2007 +<a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center> +<table width=100% cellspacing=0 border=0><tr> +<td>Copyright © 2007 +<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a> +<td align=right><div align=right>Qt 3.3.8</div> +</table></div></address></body> +</html> |