読者です 読者をやめる 読者になる 読者になる

SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

ホスト名からIPアドレス、IPアドレスからホスト名を取得(C#)(F#)

Dns.GetHostByName()及びDns.GetHostByAddressを使用したドキュメントが多く公開されているが、
これらは、.NET Framework 2.0以降、obsoleted(旧式)となっており、
代わりに、現在はSystem.Net.Dns.GetHostEntryの使用が推奨されています。

C#サンプル

using System;
using System.Net;

namespace Example {
    class Program {
        static void Main(string[] args) {
            
            var hostName = "www.kame.net";
            Console.WriteLine(string.Format("{0}のIPアドレスは", hostName));
            foreach (var a in Dns.GetHostEntry(hostName).AddressList) {
                Console.WriteLine(string.Format("({0}) {1}", a.AddressFamily, a.ToString()));
            }

            Console.WriteLine("");

            var ipStr = "203.178.141.194";
            var info = Dns.GetHostEntry(ipStr);
            Console.WriteLine(string.Format("{0} のホスト名は", ipStr));
            Console.WriteLine(string.Format("{0}", info.HostName));

            Console.WriteLine("");
            Console.WriteLine("何かのキーを押してください。");
            Console.ReadKey();
        
        }
    }
}

F#サンプル

open System
open System.Net
let hostName = "www.kame.net";
printfn "%sのIPアドレスは" hostName 
for a in Dns.GetHostEntry(hostName).AddressList do
    a.AddressFamily.ToString() |> printf "%s "
    a.ToString() |> printfn "%s"

printfn ""

let ipStr = "203.178.141.194";
let info = Dns.GetHostEntry(ipStr);
printfn "%s のホスト名は%s" ipStr info.HostName

printfn ""
printfn "何かのキーを押してください。"
Console.ReadKey() |> ignore