問題:ユーザーがホスト名またはIPアドレスのいずれかを入力できる入力フィールドがアプリケーションにあります。入力したアドレスが実際のホストに対応しているかどうかを確認する必要があります。
単純な正規表現チェックやIPAddress.TryParseまたはUri.CheckHostNameについて話しているのではありません。ホスト名を確認するのに問題はありません。IPアドレスに解決できない場合、Dns.GetHostEntryは例外をスローします。それは簡単なことです。
ただし。IPアドレスを入力すると、Dns.GetHostAddresses呼び出しを行うと、「1.1.1.1」(「1.1.1.1」はIANAの予約済みIPアドレス)のような愚かなIPを入力しても、常に成功します。 DNSサーバーは「存在しないホスト/ドメイン」を報告します)。Dns.GetHostAddressesは、すべてが問題ないように、渡したIPをすぐに吐き出します。
Dns.GetHostEntryも使用できません。DNSホスト名が関連付けられていないIPアドレス(ローカルネットワーク上の仮想マシンなど)がありますが、それらには有効なIPアドレスとDns.GetHostEntryがあります。それらに例外をスローします(私はそれがそれらのホスト名を解決しようとしていると思いますか?)。
(Uri.CheckHostNameによる)適切なIPアドレスのように見えても、それが偽のIPであるかどうかを実際に通知するメソッド呼び出しが必要ですが、対応するDNSホスト名がありません。