//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using System.Net;
using System.Net.Sockets;

namespace DNSUtilities
{
	/// <summary>
	/// Podsumowanie dla Class1.
	/// </summary>

        // IDictionaryEnumerator myEnumerator = myList.GetEnumerator();
        // Console.WriteLine( "\t-KEY-\t-VALUE-" );
        // while ( myEnumerator.MoveNext() )
        //    Console.WriteLine( "\t{0}:\t{1}", myEnumerator.Key, myEnumerator.Value );
        // Console.WriteLine();

	class DNSIPAddress
	{
		static void Main(string[] args)
		{
			String strHostName;
			if (args.Length == 0)
			{
				// Uzyskanie adresu IP komputera lokalnego.
				// Majpierw należy pobrać nazwę hosta.
				strHostName = Dns.GetHostName ();
				Console.WriteLine ("Nazwa hosta komputera lokalnego: " +  strHostName);
			}
			else
			{
				strHostName = args[0];
			}
          
			IPHostEntry ipEntry;
			IPAddress [] addr;
			try
			{
				// Wykorzystując nazwę hosta można uzyskać listę adresów IP.
				ipEntry = Dns.GetHostByName (strHostName);
				addr = ipEntry.AddressList;
				for (int i = 0; i < addr.Length; i++)
				{
					Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString ());
				}
			}
			catch(SocketException e)
			{
				Console.WriteLine("Wujątek SocketException: {0}", e.Message);
			}
			catch(ArgumentNullException e)
			{
				Console.WriteLine("Wyjątek ArgumentNullException: {0}", e.Message);
			}
         
			return;
		}
	}		
}
