°Á Àü Å¿ÀÀÇ Àâ´ã>
Ç÷¯±×ÀÎ(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
|