「C Sharpとネットワーク - DNS」の版間の差分
提供: MochiuWiki : SUSE, EC, PCB
細 文字列「<source lang」を「<syntaxhighlight lang」に置換 |
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
||
| 48行目: | 48行目: | ||
} | } | ||
} | } | ||
</ | </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);
}
}
}
}
}
}
}