lecture Home > ASP.NET > Ç÷¯±×ÀÎÀÇ .NET ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö

.NET ¼ÒÄÏ ÄÄÆ÷³ÍÆ® °³¹ß°ú ASP¿¡¼­ »ç¿ëÇϱâ

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2004³â 03¿ù 17ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2004³â 03¿ù 24ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : pluginnz(ÃÖ À±±Ô)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : .NET ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö (2)

°­Á Àü Å¿ÀÀÇ Àâ´ã>

Ç÷¯±×ÀÎ(pluginn@naver.com) ´ÔÀÇ .NET ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö °­ÁÂ, ±× µÎ¹øÂ° ½Ã°£ÀÔ´Ï´Ù.


°­Á ½ÃÀÛ >

¼ÒÄÏ

Àú¹ø °­Á¿¡¼­ "¼ÒÄϰú TCP/IP" ¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Âµ¥ »ç½Ç ¼ÒÄÏÀ» ¿¬°áÁ¡ ¶Ç´Â Á¾´ÜÁ¡(EndPoint) À̶ó°í¸¸ ¾ê±âÇߴµ¥ ±×°ÍÀÌ ¾î¶²°ÇÁö´Â? ÀÚ¼¼È÷ ¼³¸í ÇÏÁö ¾Ê¾Ò´Ù. ÀÚ ¼ÒÄÏÀÌ ¹«¾ùÀϱî? ¼­·Î ¶³¾îÁø ÄÄÇ»Å͸¦ ¿¬°áÇÏ°Ô ÇØ ÁÙ ¼öÀÖ´Â ÀÎÅÍÆäÀ̽º¶ó°í Çߴµ¥ ±¸Ã¼ÀûÀ¸·Î ¾î¶°ÇÑ ¸ð¾çÀ» °¡Áö´ÂÁö Çѹø »ý°¢Çغ¸ÀÚ.

¸Ö¸® ¶³¾îÁø ÄÄÇ»ÅͶó¸é ¼­·Î Åë½ÅÇϱâÀ§ÇØ 32bit ÀÇ IP ¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù. ±×·³ À̰ÍÀÌ ¼ÒÄÏÀΰ¡? ´ÜÁö IP °¡Áö°í¸¸ Åë½Å ÇÒ ¼ö ÀÖÀ»±î? ¹º°¡ ºÎÁ·ÇÏ´Ù ´«Ä¡ ºü¸¥ »ç¶÷À̶ó¸é ¹ú½á ´À³¢°í ÀÖÀ»°ÍÀÌ´Ù. ¹Ù·Î "Port(Æ÷Æ®)" ´Ù. ½ÇÁ¦·Î ¼­ºñ½ºµéÀº IP:Port ·Î ±¸¼ºµÇ¾î ¼­ºñ½º µÇ¾îÁø´Ù. ÀÌ´Â ÇϳªÀÇ IP¿¡¼­ ¿©·¯°³ÀÇ ¼­ºñ½º¸¦ ±¸¼º ÇÒ ¼ö ÀÖ´Ù´Â Àǹ̵µ µÈ´Ù.ÀÌ¹Ì ¿ì¸®°¡ ¾Ë°í ÀÖµíÀÌ À¥Àº 80, FTP 20,21 ÅÚ³ÝÀº 23¹ø µîµî.. Áï ¿¬°áÀ» ¸Î±âÀ§ÇÑ °¢ ÄÄÇ»ÅÍÀÇ ¼ÒÄÏÀº IP:Port ·Î ÀÌ·ç¾îÁø´Ù. Áï ¿ì¸®´Â FTP ³ª HTTP ¿Í °°ÀÌ ÇϳªÀÇ ¼­ºñ½º¸¦ ¸¸µå´Â°ÍÀÌ´Ù ¼­¹öµµ ¸¸µé°í ASP¿¡¼­ »ç¿ëµÉ Ŭ¶óÀÌ¾ðÆ®¿ëµµ ¸¸µé¾î¾ß Çϴ°ÍÀÌ´Ù. (IANA(Internet Assigned Numbers Authority) ¿¡¼­ Æ÷Æ®¿¡ ´ëÇÑ Ç¥ÁؾÈÀ» Á¤ÇÏ°í °ü¸®ÇÑ´Ù. )

System.Net & System.Net.Sockets

»ó´çÈ÷ Á÷°üÀûÀÎ À̸§À» °¡Áö°í ÀÖ´Â System.Net °ú System.Net.Sockets ³×ÀÓ½ºÆäÀ̽º´Â ¼ÒÄÏÀ» ºñ·ÔÇØ IP °Ë»ö ¹× µ¥ÀÌÅÍ Àü¼Û/¼ö½ÅÀ» À§ÇÑ Å¬·¡½º µîÀÇ ³×Æ®¿÷°ú °ü·ÃµÈ °¢Á¾ Ŭ·¡½ºµé·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.

ÀÏ´Ü ¿ì¸®°¡ ¾Õ¼­ ÇÁ·Î±×·¡¹Ö Çϴµ¥ ÇÊ¿äÇÑ ¸î °¡Áö Áß¿ä Ŭ·¡½ºµéÀ» ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.

System.Net.IPAddress   : ƯÁ¤ IP ¸¦ IPAddress °´Ã¼·Î »ý¼ºÇÑ´Ù. IPAddress ´Â ¼ÒÄÏÀÇ ¿¬°áÁ¡À» ¸¸µå´Âµ¥ ¹Ýµå½Ã ÇÊ¿äÇϸç, º¸Åë IPAddress..Parse() ¸Þ¼Òµå ·Î »ý¼ºÇÑ´Ù.

System.Net.Dns  : ¾î¶°ÇÑ µµ¸ÞÀο¡ ´ëÇÑ µµ¸ÞÀÎ Á¤º¸¸¦ °¡Á®¿À´Â µ¥ »ç¿ëµÈ´Ù. ƯÈ÷ http://www.taeyo.pe.kr °ú °°ÀÌ ip °¡ ¾Æ´Ñ µµ¸ÞÀÎÀÇ Á¤º¸·Î IPAddress ¸¦ ȹµæÇϴµ¥ ÀÚÁÖ ÀÌ¿ëµÈ´Ù. Dns.Resolve() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© IPAddress ÀÇ ¹è¿­ Ŭ·¡½ºÀÎ System.Net.IPHostEntry Çü½ÄÀ¸·Î ¸®ÅϵǸç, ÀÌ´Â ¿©·¯´ëÀÇ À¥¼­¹ö¸¦ ÀÌ¿ëÇÏ´Â À¥ÆÊ°ú °°Àº °æ¿ì¿¡ ÇØ´ç µµ¸ÞÀο¡ µî·ÏµÈ ¼­¹öµéÀÇ IP ¸¦ ¸ðµÎ ¾ò¾î¿Ã ¼ö ÀÖ´Ù. ¹°·Ð ±× ¿Ü¿¡ µµ¸ÞÀÎ °ú °ü·ÃµÈ Á¤º¸µµ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù.

System.Net.IPHostEntry : IPAddress. ÀÇ ¹è¿­ Ŭ·¡½º°¡ IPHostEntry À̸ç, À§¿¡¼­ ¹æ±Ý ¾ê±âÇÑ Dns.Resolve() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÒ °æ¿ì IPHostEntry ÀνºÅϽº¸¦ ¸®ÅÏÇÑ´Ù.

System.Net.IPEndPoint  : ¼ÒÄÏÀ» ¼³¸íÇϸ鼭 ¾ê±âÇÑ ¹Ù·Î Á¾´ÜÁ¡(¿¬°áÁ¡)À» ¸¸µå´Â Ŭ·¡½º ÀÌ´Ù. ¼ÒÄÏÀº IP ¿Í ¹«¾ùÀ¸·Î ±¸¼ºµÇ¾ú´Ù°í Çߴ°¡? ±×·¸´Ù Æ÷Æ®ÀÌ´Ù. ÀÌ Å¬·¡½ºÀÇ »ý¼ºÀÚ´Â IP ¿Í Port ¸¦ ÀÎÀÚ·Î ¹Þ¾Æ IPEndPoint ·Î °´Ã¼¸¦ »ý¼ºÇÑ´Ù. (¿©±â¼­ IP ´Â IPAddress Àϼöµµ ÀÖ°í String Çü½Äµµ °¡´ÉÇϸç, Port´Âint Çü½ÄÀ¸·Î ÀÔ·Â ¹Þµµ·Ï ´Ù¾çÇÏ°Ô ¿À¹ö·Îµù µÇ¾îÀÖ´Ù.)- System.Net.Sockets.Socket - ¼ÒÄÏ Å¬·¡½ºÀÇ »ý¼ºÀÚ´Â °´Ã¼ »ý¼º½Ã ¼ÒÄÏ¿¡ ´ëÇÑ ´Ù¾çÇÑ ¼³Á¤À» ÇÒ ¼ö ÀÖ´Ù. IPv4 ÀÎÁö IPv6 ÀÎÁö , TCP Çü½ÄÀÎÁ¦ UDP Çü½ÄÀÎÁö µîÀÇ Á¤º¸¸¦ ¿­°ÅÇüÀ¸·Î ÀÔ·ÂÇÏ°í ¼³Á¤ÇÑ È¯°æ¿¡ ÇØ´çµÇ´Â ÀνºÅϽº¸¦ »ý¼ºÇÑ´Ù. ±×¸®°í ¼ÒÄÏÀÇ Bind() ¸Þ¼Òµå¸¦ ÅëÇØ ¼ÒÄÏÀÇ Á¾´ÜÁ¡ÀÎ IPEndPoint ¸¦ ¸Þ¼Òµå¿¡ ³Ñ±èÀ¸·Î½á ¼ÒÄÏÀÇ Áغñ´Â ³¡³ª°Ô µÈ´Ù.

À§¿¡ ¼³¸íÇÑ Å¬·¡½ºµéÀ» Çϳª¾¿ Å×½ºÆ® ÇØº¸µµ·Ï ÇÏÀÚ

.Net À» ½ÇÇàÇÏ°í °£´ÜÇÏ°Ô Å×½ºÆ® ÇϱâÀ§ÇØ Console Application À» ¼±ÅÃÇϰí Project ¸íÀº ÀÓÀÇ´ë·Î ÀÔ·ÂÇϱ⠹ٶõ´Ù.

ÀÚ ¿ì¸®°¡ À§ÀÇ ¼ÒÄϰú °ü·ÃµÈ Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ­´Â À§¿¡¼­ ¸»ÇßµíÀÌ System.Net °ú System.Net.Socket ³×ÀÓ½ºÆäÀ̽º ¾È¿¡ ³×Æ®¿÷°ú °ü·ÃµÈ Ŭ·¡½º µéÀÌ ¸ðµÎ Æ÷ÇԵǾîÁ® ÀÖ´Ù. using ¸í·É¾î·Î ¼±¾ð ÇÏ¿©, ÇÁ·Î±×·¥½Ã ³×ÀÓ½ºÆäÀ̽º¸¦ ¸ðµÎ ½á¾ßÇÏ´Â ºÒÆíÇÔÀ» ¾ø¾ÖÀÚ.

www.msn.co.kr(207.46.68.21) »çÀÌÆ®ÀÇ IP ¸¦ ÀÔ·ÂÇÏ¿© IPAddress °´Ã¼¸¦ ¾ò¾î³»´Â ÄÚµùÀ» ÇØº¸ÀÚ

* ¼ÒÄÏÀÇ ¿¬°áÁ¡ À» ¸¸µé±â À§ÇØ IPAddress °´Ã¼¸¦ ¾ò¾î³»´Â ¹æ¹ý (À§¿¡¼­ ¾ð±ÞÇßµíÀÌ ¼ÒÄÏÀº IP ¿Í Port ·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. IP´Â IPAddressÀÇ °´Ã¼À̸ç Port ´Â int ÇüÀ̶ó°íµµ ¾÷±ÞÇß´Ù. ¿ì¸®´Â ¼­¹ö¿¡ Á¢±ÙÇϱâÀ§ÇØ Ä¸½¶È­µÈ IPAdress °´Ã¼°¡ ÇÊ¿äÇÏ´Ù)

using System;
using System.Net;
using System.Net.Sockets;

namespace StartSocket
{

    class Class1
    {

        [STAThread] static void Main(string[] args)
        {
            IPAddress ipaddr =IPAddress.Parse("207.46.68.21");
            Console.WriteLine(ipaddr.ToString());
        }
    }
}

[¼³¸í]

System.Net.IPAddress Ŭ·¡½ºÀÇ Parse() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© IPAddress ÀÇ °´Ã¼ÀÎ ipaddr »ý¼ºÀ» ½ÃµµÇϰí ÀÖ´Ù. ÀÌ´Â ¹®ÀÚ¿­À» Àμö·Î ¹ÞÀ¸¸ç IPAddress ¸¦ ¸®ÅÏÇÑ´Ù., ¾Æ·¡ Parse() ¸Þ¼ÒµåÀÇ ½Ã±×³ÊÃĸ¦ º¸¸é ¸®ÅÏÇüÀÌ IPAddress ÀΰÍÀ» º¼ ¼ö ÀÖ´Ù.


System.Net.IPAddress.Parse() ¸Þ¼ÒµåÀÇ ½Ã±×³ÊÃÄ

À§ÀÇ °æ¿ì´Â "207.46.68.21" ó·³ IP ¾Ë°í ÀÖÀ»°æ¿ì´Â ¹®Á¦ ¾øÀÌ IPAddress °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù .ÇÏÁö¸¸ ´ëºÎºÐÀÇ »ç¶÷µéÀÌ IP´Â ±â¾ïÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ System.Net.Dns Ŭ·¡½º ÀÇ Resolve() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ ¾ò¾î³»´Â ¹æ¹ýÀ» ÄÚµùÇØº¸ÀÚ

using System;
using System.Net;
using System.Net.Sockets;

namespace StartSocket
{
    class Class1
    {
        [STAThread] static void Main(string[] args)
        {
            IPHostEntry ipentry= Dns.Resolve("www.microsoft.com");

            foreach(IPAddress ipaddr in ipentry.AddressList)
            {
                Console.WriteLine(ipaddr.ToString());
            }
        }
    }
}

www.microsoft.com »çÀÌÆ®ÀÇ IP ÁÖ¼Ò¸¦ ¾ò±âÀ§ÇØ Dns.Resolve() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿´´Ù. Dns.Resolve() ¸Þ¼Òµåµµ IPAddress.Parse(string ip) ¸Þ¼Òµå ó·³ Á¤Àû ¸Þ¼Òµå·Î °´Ã¼ »ý¼º¾øÀÌ »ç¿ëÇÏ¿´´Ù. DnsÀÇ Resolve() ¸Þ¼Òµå¿¡ ¸¶¿ì½º¸¦ °®´Ù°¡ ´ëº¸ÀÚ.

[¼³¸í]

¸®ÅÏÇüÀÌ IPHostEntry ÀΰÍÀ» º¼ ¼ö ÀÖ´Ù.

    IPHostEntry ipentry= Dns.Resolve("www.microsoft.com");

ÀÚ!! ipendtry °´Ã¼¿¡´Â www.microsoft.com µµ¸ÞÀο¡ µî·ÏµÈ ¼­¹öµéÀÇ IP µéÀÌ IPAddress ÀÇ ¹è¿­ÇüÅÂÀÎ IPHostEntry Ŭ·¡½º·Î ¸¸µé¾îÁ® ÀÖ´Ù. ¹è¿­À̱⠶§¹®¿¡ foreach ¹®À» ÅëÇØ¼­ ¸ðµÎ Ãâ·ÂÇØ º¸¾Ò´Ù

        foreach(IPAddress ipaddr in ipentry.AddressList)
        {
            Console.WriteLine(ipaddr.ToString());
        }

(Âü°í·Î ¹è¿­ À妽º·Î Á¢±ÙÇÏ¿© ÇϳªÀÇ IPAddress ¸¦ °¡Á®¿Ã¼öµµÀÖ´Ù. ÇÏÁö¸¸ µµ¸ÞÀÎÀÌ °¡Áö´ÂIP °¹¼ö´Â µµ¸ÞÀÎ ¸¶´Ù ´Ù¸£¹Ç·Î System.IndexOutOfRangeException ÀÌ ¹ß»ýÇÏÁö ¾Êµµ·Ï ÇÏÀÚ) ipentry °´Ã¼´Â ÀÌÁ¦ www.microsoft.com µµ¸ÞÀο¡ ´ëÇØ ¸î °¡Áö ¼Ó¼ºÀ» °¡Áö°í Àִµ¥, IP ¸¦¾ò¾î¿À±â À§Çؼ­´Â ipentry ÀÇ AddressList ¼Ó¼ºÀ¸·Î Á¢±ÙÇÏ¿© IPAddress Ŭ·¡½º ŸÀÔÀÇ °´Ã¼¸¦ Çϳª¾¿ ¾ò¾î¿Ã¼ö°¡ ÀÖ´Ù. foreach ¹®À» µ¹·Á °´Ã¼¸¦ »ý¼ºÇØ ³»°í Console.WriteLine ¹®À¸·Î IP¸¦ Ãâ·ÂÇØ º¸¾Ò´Ù


www.microsoft.com µµ¸ÞÀο¡´Â ÃÑ 8°³ÀÇ IP ¸¦ »ç¿ëÇϰí ÀÖ´Ù

À§ ±×¸²Àº IPEntryHost °´Ã¼ÀÇ AddressList ¸¦ ÅëÇØ IP ¸¦ Ãâ·ÂÇØº¸¾Ò´Âµ¥, ´Ù¸¥ ¼Ó¼ºµµ ÀÌ¿ëÇØ º¸µµ·Ï ÇÏÀÚ. ±×·³ Ȥ½Ã www.microsoft.com µµ¸ÞÀÎ ¿Ö¿¡ ¶Ç´Ù¸¥ µµ¸ÞÀÎÀ¸·Î ¸ÅÇεǾî ÀÖÁö ¾Ê³ª Çѹø È®ÀÎÇØº¸ÀÚ. À̶§´Â IPEntryHost°´Ã¼.Aliases ¼Ó¼ºÀ¸·Î Á¢±Ù ÇÑ´Ù. ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ

[¼öÁ¤Àü]
foreach(IPAddress ipaddr in ipentry.AddressList) : AddressList ºÎºÐÀ» ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤Çغ¸ÀÚ

[¼öÁ¤ÈÄ]
foreach(string ipaddr in ipentry.Aliases)

ÀÚ~ www.microsoft.com À̶ó´Â »çÀÌÆ®°¡ ¶Ç ´Ù¸¥ µµ¸ÞÀÎÀÎ www.microsoft.akadns.net À̶ó´Â URLÀ» °¡Áö°í ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

¿©·¯ºÐµéÀÌ Çѹø www.taeyo.pe.kr »çÀÌÆ® IPAddress ¸¦ System.Net.Dns.Resolve() ¸¦ ÀÌ¿ëÇÏ¿© »ý¼ºÇغ¸ÀÚ

[ÆÁ]

°¡²û ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é URL ºÐ¼®À» ÇÒ °æ¿ì°¡ ÇÊ¿äÇÏ´Ù. ÀÌ·²¶§ Á¤¸» À¯¿ëÇÑ Å¬·¡½º Çϳª¸¦ ¼Ò°³ÇϰڴÙ. ¹Ù·Î System.Uri Ŭ·¡½º ÀÌ´Ù. ÀÚ. ¹é¹®À̺ҿ©ÀÏŸ ÀÌ´Ù. ¾Æ·¡¿Í °°ÀÌ ÄÚµùÇØº¸ÀÚ

using System;
namespace StartSocket
{
    class Class1
    {
        [STAThread] static void Main(string[] args)
        {
            string taeyoUrl="http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Asp&seqs=93626&page=1";

            Uri uri = new Uri(taeyoUrl);

            Console.WriteLine("Host : " + uri.Host);
            // www.taeyo.pe.kr
            Console.WriteLine("URL Query : " + uri.Query);
            //?table=Board_Asp&seqs=93626&page=1&IsSearch= Äõ¸®°¡ Ãâ·ÂµÈ´Ù.
            Console.WriteLine("Host Type:" + uri.HostNameType);
            // Dns °¡ Ãâ·ÂµÈ´Ù. IP Àΰæ¿ì IPv4 ·Î Ãâ·ÂµÈ´Ù.
            Console.WriteLine(uri.AbsolutePath);
            //threadboard/Content.asp Àý´ë °æ·Î°¡ Ãâ·ÂµÈ´Ù.
        }
    }

Url ¿¡ ´ëÇÑ Á¤º¸¸¦ »ó¼¼ÇÏ°Ô ºÐ¼®ÇÏ¿© ÇÊ¿äÇÑ Á¤º¸¸¦ ´ëºÎºÐ string ÇüÅ·Π¾ò¾î¿Ã ¼ö ÀÖ´Ù Á¤¸» À¯¿ëÇÑ Å¬·¡½º ÀÌ´Ù.

À̹ø °­Á´ IP ¸¦ ÀÌ¿ëÇØ¼­ IPAddress ¸¦ ¾ò´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. ¾ÆÁ÷±îÁö´Â ´Ù¼Ò Áغñ°úÁ¤¿¡ ºÒ°úÇѰа°´Ù. ´ÙÀ½ °­Á¿¡¼­´Â IPAddress ¸¦ ÀÌ¿ëÇØ IPEndPoint°´Ã¼¸¦ ¸¸µé°í TCP/UDP ¼ÒÄÏÀ» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú´Ù.

 

Back