⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdns_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00163       DNS_A_DATA     A;00164       DNS_MX_DATA    MX;00165       DNS_PTR_DATA   NS;00166       DNS_SRV_DATA   SRV;00167       DNS_NULL_DATA  Null;00168     } Data;00169 };00170 00171 <span class="keyword">typedef</span> DnsRecord * PDNS_RECORD;00172 00173 <span class="keyword">extern</span> <span class="keywordtype">void</span> DnsRecordListFree(PDNS_RECORD rec, <span class="keywordtype">int</span> FreeType);00174 00175 <span class="keyword">extern</span> DNS_STATUS DnsQuery_A(<span class="keyword">const</span> <span class="keywordtype">char</span> * service,00176                       WORD requestType,00177                       DWORD options,00178                       <span class="keywordtype">void</span> *,00179                       PDNS_RECORD * results,00180                       <span class="keywordtype">void</span> *);00181 00182 00183 <span class="preprocessor">#endif // P_HAS_RESOLVER</span>00184 <span class="preprocessor"></span>00185 <span class="keyword">namespace </span>PDNS {00186 00188 <span class="comment">//</span>00189 <span class="comment">//  this template automates the creation of a list of records for</span>00190 <span class="comment">//  a specific type of DNS lookup</span>00191 <span class="comment">//</span>00192 00193 <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> type, <span class="keyword">class</span> RecordListType, <span class="keyword">class</span> RecordType&gt;00194 BOOL Lookup(<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; name, RecordListType &amp; recordList)00195 {00196   <span class="keywordflow">if</span> (name.<a class="code" href="classPString.html#z235_1">IsEmpty</a>())00197     <span class="keywordflow">return</span> FALSE;00198 00199   recordList.RemoveAll();00200 00201   PDNS_RECORD results = NULL;00202   DNS_STATUS status = DnsQuery_A((<span class="keyword">const</span> <span class="keywordtype">char</span> *)name, 00203                                  type,00204                                  DNS_QUERY_STANDARD, 00205                                  NULL, 00206                                  &amp;results, 00207                                  NULL);00208   <span class="keywordflow">if</span> (status != 0)00209     <span class="keywordflow">return</span> FALSE;00210 00211   <span class="comment">// find records matching the correct type</span>00212   PDNS_RECORD dnsRecord = results;00213   <span class="keywordflow">while</span> (dnsRecord != NULL) {00214     RecordType * record = recordList.HandleDNSRecord(dnsRecord, results);00215     <span class="keywordflow">if</span> (record != NULL)00216       recordList.Append(record);00217     dnsRecord = dnsRecord-&gt;pNext;00218   }00219 00220   <span class="keywordflow">if</span> (results != NULL)00221     DnsRecordListFree(results, DnsFreeRecordList);00222 00223   <span class="keywordflow">return</span> recordList.GetSize() != 0;00224 }00225 00227 00228 <span class="keyword">class </span>SRVRecord : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00229 {00230   <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(SRVRecord, <a class="code" href="classPObject.html">PObject</a>);00231   <span class="keyword">public</span>:00232     SRVRecord()00233     { used = FALSE; }00234 00235     Comparison Compare(<span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> &amp; obj) <span class="keyword">const</span>;00236     <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a9">PrintOn</a>(ostream &amp; strm) <span class="keyword">const</span>;00237 00238     <a class="code" href="classPString.html">PString</a>            hostName;00239     <a class="code" href="classPIPSocket_1_1Address.html">PIPSocket::Address</a> hostAddress;00240     BOOL               used;00241     WORD port;00242     WORD priority;00243     WORD weight;00244 };00245 00246 <a class="code" href="lists_8h.html#a7">PDECLARE_SORTED_LIST</a>(SRVRecordList, PDNS::SRVRecord)00247   <span class="keyword">public</span>:00248     <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a9">PrintOn</a>(ostream &amp; strm) <span class="keyword">const</span>;00249 00250     SRVRecord * GetFirst();00251     SRVRecord * GetNext();00252 00253     PDNS::SRVRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results);00254 00255   <span class="keyword">protected</span>:00256     PINDEX     priPos;00257     <a class="code" href="classPWORDArray.html">PWORDArray</a> priList;00258 };00259 00264 <span class="keyword">inline</span> BOOL GetRecords(<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; service, SRVRecordList &amp; serviceList)00265 { <span class="keywordflow">return</span> Lookup&lt;DNS_TYPE_SRV, SRVRecordList, SRVRecord&gt;(service, serviceList); }00266 00270 <span class="keyword">inline</span> BOOL GetSRVRecords(00271       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; service,00272       SRVRecordList &amp; serviceList00273 )00274 { <span class="keywordflow">return</span> GetRecords(service, serviceList); }00275 00280 BOOL GetSRVRecords(00281       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; service,00282       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; type,00283       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; domain,00284       SRVRecordList &amp; serviceList00285 );00286 00288 00289 <span class="keyword">class </span>MXRecord : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00290 {00291   <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(MXRecord, <a class="code" href="classPObject.html">PObject</a>);00292   <span class="keyword">public</span>:00293     MXRecord()00294     { used = FALSE; }00295     Comparison <a class="code" href="classPObject.html#z199_1">Compare</a>(<span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> &amp; obj) <span class="keyword">const</span>;00296     <span class="keywordtype">void</span> <a class="code" href="classPObject.html#z201_0">PrintOn</a>(ostream &amp; strm) <span class="keyword">const</span>;00297 00298     <a class="code" href="classPString.html">PString</a>            hostName;00299     <a class="code" href="classPIPSocket_1_1Address.html">PIPSocket::Address</a> hostAddress;00300     BOOL               used;00301     WORD               preference;00302 };00303 00304 <a class="code" href="lists_8h.html#a7">PDECLARE_SORTED_LIST</a>(MXRecordList, PDNS::MXRecord)00305   <span class="keyword">public</span>:00306     <span class="keywordtype">void</span> <a class="code" href="array_8h.html#a9">PrintOn</a>(ostream &amp; strm) <span class="keyword">const</span>;00307 00308     MXRecord * GetFirst();00309     MXRecord * GetNext();00310 00311     PDNS::MXRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results);00312 00313   <span class="keyword">protected</span>:00314     PINDEX lastIndex;00315 };00316 00320 <span class="keyword">inline</span> BOOL GetRecords(00321       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; domain,00322       MXRecordList &amp; serviceList00323 )00324 { <span class="keywordflow">return</span> Lookup&lt;DNS_TYPE_MX, MXRecordList, MXRecord&gt;(domain, serviceList); }00325 00329 <span class="keyword">inline</span> BOOL GetMXRecords(00330       <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; domain,00331       MXRecordList &amp; serviceList00332 )00333 {00334   <span class="keywordflow">return</span> GetRecords(domain, serviceList);00335 }00336 00338 00339 }; <span class="comment">// namespace PDNS</span>00340 00341 <span class="preprocessor">#endif // _PDNS_H</span>00342 <span class="preprocessor"></span><span class="preprocessor">#endif // P_DNS</span>00343 <span class="preprocessor"></span>00344 <span class="comment">// End Of File ///////////////////////////////////////////////////////////////</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:11 2004 for PWLib by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -