「C Sharpとネットワーク - DNS」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

文字列「<source lang」を「<syntaxhighlight lang」に置換
文字列「</source>」を「</syntaxhighlight>」に置換
48行目: 48行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C_Sharp]]
[[カテゴリ:C_Sharp]]

2021年11月24日 (水) 18:07時点における版

概要

DNSレコードの存在を確認するには、DnsClient.NETというライブラリを使用する。
ここでは、調べたい対象のDNSのリストが記述されたファイルを順番に読み込み、存在しない場合は別ファイルに書き込む処理を行う。


サンプルコード

サンプルコードでは、LookupClientのQueryメソッドにて、対象のドメインとレコードの種類(AおよびNS)を指定して、
結果が0件なら存在しないと判断する。

MXレコードを対象としているが、QueryType(Enum)でレコードの種類(AおよびNS)が定義されているので、
様々な種類のレコードを対象に調べることができる。

 using System;
 using System.IO;
 using DnsClient;  // DnsClientを参照に追加
 
 namespace DNSRecordCheck
 {
    class Program
    {
       static async void Main(string[] args)
       {
          // LookupClientクラスのインスタンスを生成
          var lookupClient = new LookupClient();
 
          using (var sreader = new StreamReader(@"C:\domains.txt"))
          {
             while (!sreader.EndOfStream)
             {
                // 調査対象のリストから1行ずつ読み込み
                var line = await sreader.ReadLineAsync();
 
                using (var swriter = File.AppendText(@"C:\ignores.txt"))
                {
                   // 読み込んだDNSを問い合わせる(QueryType.MX : MXレコードを対象とする)
                   var result = lookupClient.Query(line, QueryType.MX);
 
                   if (result.Answers.Count == 0)
                   {  // 結果が0件の場合は存在しないと判断
                      // 別ファイル(ignores.txt)に書き込む
                      swriter.WriteLine(line);
                   }
                }
             }
          }
       }
    }
 }