dotnetlogo2ホスト名を取得する部分は System.Net.Dns.GetHostEntry メソッドで System.Net.IPHostEntry オブジェクトを取得し、HostName プロパティの値を取れば OK だという事はすぐにわかった。
しかしホスト名が分からなかった場合、HostName プロパティには文字列形式の IP アドレスが格納されてしまう。
そもそも IPHostEntry オブジェクトはどうやってホスト名を取得してるのかがよくわからんのですが、まぁ DNS やら WINS やら hosts ファイルやらキャッシュやら、実行 PC のネットワーク環境のアレやコレやを駆使して取得しているに過ぎないんでしょうな。
IP アドレスが格納されてしまうパターンとしては、
  1. ホスト名を解決できなかった場合
  2. そもそも指定した IP アドレスのノードがネットワーク上に生きていない
てな感じ。
2 に関しては System.Net.NetworkInformation.PingReply の Status が System.Net.NetworkInformation.IPStatus.Success 以外ならその後の処理をしないようにすれば OK か。
1 に関しては HostName の値が IP アドレスと同じなら空文字を返すようにしちゃえばいいかな。