[C# TCP/IP] C# TCP/IP 호스트 명과 IP 주소 출력하는 방법(IPAddress, IPHostEntry)


안녕하세요.

 

오늘부터, 틈틈히 시간 있을 때 제가 평소에 취약하면서 꼭 공부를 하고 싶었던 것이 있었습니다.

 

바로 TCP/IP 소켓 프로그래밍 인데요. 예전부터 제대로 해야지..해야지..하다가 아직도 안하고 이제 겨우 시작을 하게 되었습니다.

 

그래서 저도 공부하면서 정리한 내용을 공유를 해 드릴 겸 포스팅을 하게 되었습니다.


 

오늘은 그 첫 시간으로써, C#에서 DNS, IPAddress, IPHostEntroy 클래스들을 사용하여 호스트에 대한 호스트 명과 IP 주소를 출력하는 방법에 대해서 알려드리려고 합니다.

 

그럼 예제 코드를 작성하기 전에 각각 위에서 말한 DNS, IPAddress, IPHostEntry 클래스들에 대해서 간단히 뭔지는 알고 가야겠죠?ㅎㅎ

 

1.   IPAddress

- IPAddress 클래스는 IP 네트워크가 갖는 하나의 인터페이스에 대한 주소를 포함하는 클래스입니다.

 

2.   IPHostEntry

- IPHostEntryDNS 클래스의 GetHostByName(), GetHostByAddress(), 그리고 Resolve() 메서드의 반환 값으로 돌아오는 컨테이너 클래스 입니다. 이 클래스는 호스트 이름 및 여기에 현재 등록되어 있는 IP 주소들, 그리고 이 호스트에 대한 Alias 등 호스트에 대한 DNS 정보를 포함하고 있습니다.

 

3.   DNS

-     DNS 클래스는 DNS 로부터 호스트명 또는 IP 주소와 관련된 정보를 수집할 수 있는 여러 정적 메서드를 제공해 주는 클래스입니다.

 

그럼 이제 위의 3개의 클래스를 이용하여 예제 코드를 작성해 보도록 하겠습니다.

 

참고로, 여기 예제 코드는 TCP/IP 소켓 프로그래밍 C# 버전이라는 책을 참고하여 작성하였습니다.


예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

 

namespace IPAddressExample

{

    class Program

    {

        static void PrintHostInfo(string host)

        {

            try

            {

                IPHostEntry hostInfo;

 

                //호스트 또는 주소에 대한 DNS 해석

                hostInfo = Dns.Resolve(host);

 

                //호스트의 기본 호스트명을 출력

                Console.WriteLine("\tCanonical Name :" + hostInfo.HostName);

 

                // 호스트에 대한 IP 주소들을 출력

                Console.Write("\tIP Address :");

                foreach(IPAddress ipaddr in hostInfo.AddressList)

                {

                    Console.WriteLine(ipaddr.ToString() + " ");

                }

                Console.WriteLine();

 

                // 호스트의 앨리어스들을 출력

                Console.WriteLine("\tAliases: ");

                foreach(String alias in hostInfo.Aliases)

                {

                    Console.Write(alias + " ");

                }

                Console.WriteLine();

            }

            catch(Exception ex)

            {

                Console.WriteLine(ex.ToString());

            }

        }

 

        static void Main(string[] args)

        {

            //로컬 호스트의 정보를 취합  출력

            try

            {

                Console.WriteLine("\tLocal Host :");

                string localHostName = Dns.GetHostName();

                Console.WriteLine("\tHost Name  :" + localHostName);

 

                PrintHostInfo(localHostName);

 

            }

            catch(Exception ex)

            {

                Console.WriteLine(ex.ToString());

            }

        }

    }

}

 

Colored by Color Scripter

cs


실행 결과



위와 같이 현재 호스트의 이름과 IP 주소를 출력한 것을 확인하실 수 있습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY