°Á Àü Å¿ÀÀÇ Àâ´ã>
´º Å¿À »çÀÌÆ®ÀÇ ´º °Ô½ÃÆÇ ÁغñÁßÀÔ´Ï´Ù... ¾Æ... ¸ðµç ½ºÅ©¸³Æ®¸¦ HTC·Î ¹Ù²Ù·Á´Ï ½Ã°£ÀÌ Àå³ÀÌ ¾Æ´Ï³×¿ä ¤Ð¤Ð
°Á ½ÃÀÛ >
°ÁÂ Àü¿¡
¾È³çÇϼ¼¿ä. À̹ø°Á¿¡¼´Â °í¼öÁØ TCP ¼ÒÄÏÀ» ´Ù·ïº¸°í, .NetÀÇ ¾î¼Àºí¸®¿¡ ¾Ë¾Æº¾´Ï´Ù.
°í¼öÁØ Å¬·¡½º¸¦ ÀÌ¿ëÇÑ ¼ÒÄÏ Åë½Å
System.Net.Sockets.TcpListener ¿Í System.Net.Sockets.TcpClient 2°³ÀÇ Å¬·¡½º·Î ÀÌ·ç¾îÁø
TCP Ŭ·¡½º¸¦ ÅëÇØ Àú¹ø½Ã°£¿¡ Socket À¸·Î ±¸ÇöÇÑ ¼Ò½º¸¦ ¶È°°ÀÌ ±¸ÇöÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
±âÁ¸ÀÇ Socket À» ÅëÇØ ±¸ÇöÇÑ °³³ä°ú ºñ½ÁÇÏÁö¸¸, Socket Ŭ·¡½º¿Í´Â ´Ù¸£°Ô ´Ù·ç±â°¡ Á» ´õ ½±´Ù°í ÇÕ´Ï´Ù. ±×·¡¼ "°í¼öÁØ Tcp Ŭ·¡½º" ¶ó°í Çϸé "Socket Ŭ·¡½º"´Â Àú¼öÁØÀ̶ó°í ¸í¸íÇϰí ÀÖ½À´Ï´Ù.
(°³ÀÎÀûÀ¸·Î´Â intellesence ±â´É ¶§¹®¿¡ µÑ ´Ù ´Ù·ç±â ÆíÇѰа°½À´Ï´Ù¸¸,)
¾Æ·¡Ç¥´Â ¿ì¸®°¡ À̹̹è¿î Socket Ŭ·¡½ºÀÇ ÀÇ ¸Þ¼Òµå¿¡ ´ëÀÀµÇ´Â TCP Ŭ·¡½ºÀÇ Å¬·¡½º¿Í ¸Þ¼ÒµîÀ»
¸ÅÄªÇØº»°ÍÀÔ´Ï´Ù.
ÇÏÀ§ TCP Ŭ·¡½º ¹æ½Ä |
Socket socket = new Socket(TCP¼³Á¤) |
socket.Listener(); |
socket.Bind(IPEndPoint); |
Socket Client = socket.Accept(); |
Client.Write(); |
Client.Read(); |
Client.Close(); |
|
»óÀ§ TCP Ŭ·¡½º ÀÌ¿ë¹æ½Ä |
TcpListener ln =new TcpListener(EndPoint);
ln.Start(); //Socket ÀÇ Listener ¿¡ ÇØ´çµÈ´Ù.
|
TcpClient client = ln.AccepTcpClient(); |
NetworkStream ns = client.GetStream(); |
ns.Write(); |
ns.Read(); |
ns.Close(); |
|
Àá±ñ Ư¼ºÀ» ¾Ë¾Æº¸ÀÚ¸é, ±âÁ¸ÀÇ Socket Ŭ·¡½º´Â Socket »ý¼ºÀÚ·Î ÀνºÅϽº¸¦ »ý¼ºÇϸé¼, TCPÀÎÁö UDP ÀÎÁö¿¡ ´ëÇÑ ¾Æ·¡¿Í °°Àº ¿É¼ÇÀ¸·Î ÁöÁ¤ÇØÁà¾ß ÇÕ´Ï´Ù.
Socket server = new Socket (AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
TCP Ŭ·¡½ºÀÇ °æ¿ì´Â µû·Î TCP ¼³Á¤¾øÀÌ, TCP¸¸ÀÇ Åë½ÅÀ» À§ÇØ Àú¼öÁØÀÇ SocketÀ¸·Î ÀÛ¼ºµÈ
TCPListener, TCPClient Ŭ·¡½º¸¦ .Net ¿¡¼´Â Áö¿øÇÕ´Ï´Ù.±×·¡¼ º¹ÀâÇÑ ¼³Á¤¾øÀÌ
TcpListener ln = new TcpListener(EndPoint)
·Î ´ë½Å ÇÕ´Ï´Ù. EndPoint°´Ã¼¸¦ ¸¸µé±â À§ÇØ IPEndPointŬ·¡½º·Î ÀνºÅϽº¸¦ µû·Î ÀÛ¼ºÇϴ°ÍÀº
ÀÌ¹Ì Socket ´Ù·ç¸é¼ ¸¹ÀÌ ºÁ¿ÔÀ» °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ TCP °´Ã¼ ¿¡¼´Â Á» ´õ ÆíÇÏ°Ô ¿À¹ö·ÎµùµÈ
»ý¼ºÀÚ¸¦ °¡Áö°í ÀÖ¾î µû·Î IPEndPoint ÀνºÅϽº»ý¼ºÀÚ¸¦ ¸¸µéÁö¾Ê°í ¾Æ·¡¿Í °°À̵µ °¡´ÉÇÕ´Ï´Ù.
TcpListener ln = new TcpListener(int port);
-> TcpListener ln = new TcpListener(6000);
|
ÀÌ·¯ÇÑ ½ÄÀ¸·Î Æ÷Æ® ¹øÈ£¸¸ ÁöÁ¤ÇØÁÖ¸é ÀÚ½ÅÀÇ IP ¸¦ ¼¹öIP·Î Çϰí port ¸¸ int °ªÀ¸·Î ÀÔ·ÂÇØÁÖ¸é
IPEndPoint ÀνºÅϽº¸¦ µû·Î ÀÛ¼ºÇØÁÖ½Ç Çʿ䰡 ¾ø½À´Ï´Ù. Á» ´õ ¼³¸íÇÏÀÚ¸é,
Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀ» ´ë±âÇÏ´Â TcpListener Ŭ·¡½º¿Í Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ °´Ã¼¸¦ °¡¸®Å°´Â TcpClient Ŭ·¡½º·Î ±¸ÇöÀÌ µÇ¾î ÀÖ½À´Ï´Ù. ³»ºÎÀûÀ¸·Î´Â Socket Ŭ·¡½º·Î ÀÛ¼ºµÇ¾îÁ® ÀÖÀ¸¹Ç·Î, Socket Ŭ·¡½º¸¦ ½á¾ßÇÒÁö TcpListener , TcpClient °´Ã¼¸¦ ½á¾ßÇÒÁö °í¹ÎÇÒ ÇÊ¿ä´Â Ưº°È÷ ¾øÀ» °ÍÀÔ´Ï´Ù. ÀÚ½ÅÀÌ ÆíÇÑ ¹æ½ÄÀ» ¼±ÅÃÇØ¼ ÇÁ·Î±×·¡¹ÖÀ» ÀÛ¼ºÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù. ±¸Áö Àå´ÜÁ¡À» µûÁöÀÚ¸é TCPListener , TcpClient (ÀÌÇÏ TCP Ŭ·¡½º) ´Â ÀÎÅÍÆäÀ̽º°¡ »ç¿ëÀÚµéÀÌ Á¢ÇϱⰡ Á¶±Ý ´õ ½±´Ù´Â Á¡ÀÔ´Ï´Ù.
Socket Client = socket.Accept(); // ±âÁ¸ Socket
TcpClient client = ln.AccepTcpClient(); // Tcp Ŭ·¡½º
|
±âÁ¸ÀÇ Socket À» ÀÌ¿ëÇÑ ¹æ½ÄÀº ¼¹ö¼ÒÄϰ´Ã¼.Accept(); ¸Þ¼Òµå°¡, Á¢¼ÓµÇ´Â Ŭ¶óÀ̾ðÆ®ÀÇ IPEndPoint
Á¤º¸¸¦ °¡Áö°í ¼ÒÄÏ °´Ã¼·Î ¸®ÅϵǴ ¸ð½ÀÀÔ´Ï´Ù.
TCP Ŭ·¡½º¸¦ ¿¹·Î Á» ´õ Á÷°üÀûÀ¸·Î ¸»ÇÏÁö¸é, Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼ÓÀ» ¸®½º´×Çϰí ÀÖ´Â ln ÀνºÅϽº°¡ AccepTcpClient() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© Ŭ¶óÀÌ¾ðÆ® Á¢¼ÓÀ» ´ë±âÇÏ´Ù°¡, Á¢¼ÓÀÌ ½ÃµµµÇ¸é Ŭ¶óÀ̾ðÆ®Ãø IPEndPointÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â TcpClient °´Ã¼·Î ¸®ÅÏÇÏ°Ô µË´Ï´Ù.
ÀÚ.. µÑ´Ù °°Àº¸»ÀÔ´Ï´Ù. TCP Ŭ·¡½º·Î ÀÛ¼ºµÈ TcpClient °´Ã¼°¡ Á» ´õ Á÷°üÀûÀ¸·Î º¸ÀÏ »ÓÀÔ´Ï´Ù.
TCP Ŭ·¡½º·Î ÀÛ¼ºµÈ ¼ÒÄÏÀÇ °æ¿ì ÇѰ¡Áö ƯÀÌÇÑ Á¡ÀÌ Àִµ¥, ±×°ÍÀº TcpClient·Î ¸®ÅÏµÈ °´Ã¼°¡
Á÷Á¢ Åë½ÅÀ» ÇÏÁö ¾Ê´Â´Ù´Â°ÍÀÔ´Ï´Ù. ¾Æ·¡¸¦ º¸¸é,
NetworkStream ns = client.GetStream();
ns.Write();
ns.Read();
|
Ŭ¶óÀ̾ðÆ®Ãø ÀνºÅϽº°¡ getStream() ¸Þ¼Òµå¸¦ ÅëÇØ ½ºÆ®¸² Åë½ÅÀ» ÇÒ ¼ö ÀÖµµ·Ï NetworkStream À¸·Î ¸®ÅÏÀÌ µË´Ï´Ù. Áï, ½ÇÁ¦ÀûÀ¸·Î ÇÏÀ§ ¼ÒÄÏ¿¡¼ÀÇ ¿¬°á¼³Á¤°ú ¸®½º´×, ¹ÙÀεù , Accept ¸¦ Socket °´Ã¼È¥ÀÚ¼ ÇÑ´Ù¸é, TCP Ŭ·¡½º¿¡¼´Â ¿¬°á¼³Á¤,¸®½º´×,¹ÙÀεù,Accept´Â TcpListener Á¢¼ÓµÈ Ŭ¶óÀ̾ðÆ®
¼ÒÄÏÀº TcpClient ±×¸®°í ½ÇÁ¦ ¼Û/¼ö½ÅÀº NetworkStream ÀÌ ÇÏ°Ô µÇ´Â°ÍÀÔ´Ï´Ù. Á» ´õ º¹ÀâÇØ º¸Àϼö´Â ÀÖÁö¸¸ ¾î¶»°Ô º¸¸é TCP Ŭ·¡½º°¡ Á» ´õ Á÷°üÀûÀÌ°í ¼ø¼ ÀûÀÏ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿ªÇÒÀÌ ºÐ´ãµÇ¾î ÀÖ´Ù°í ÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù. ÇÏÁö¸¸ À§¿¡¼ Àá±ñ ¸»¾¸µå·ÈµíÀÌ ¾î¶»°Ô ÇÁ·Î±×·¡¹ÖÀ» ÀÛ¼ºÇϽôø "¼±ÅÃ"ÀÔ´Ï´Ù. ÇÏÁö¸¸ ¼±ÅÃÀ̶õ ¸»Àº µÎ°¡Áö·Î ¸ðµÎ ÀÛ¼º ÇØºÁ¾ß "¼±ÅÃ" ÇÒ ¼ö ÀÖ´Â ¸é¸ñ? ÀÌ »ý±âÁö ¾Ê³ª ½Í½À´Ï´Ù. ±×·³ ÀÌ·¯ÇÑ ´ë·«ÀûÀÎ ³»¿ëÀ» Åä´ë·Î ÀÛ¼ºµÈ ÀüÁ¦ ¼Ò½º¸¦ º¸°Ú½À´Ï´Ù.
[¼¹öÃø ¼Ò½º]
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ServerHighSocket
{
class Class1
{
static byte[] rData = new byte[1024];
static byte[] sData = new byte[1024];
[STAThread] static void Main(string[] args)
{
IPAddress ipAddr = Dns.Resolve("127.0.0.1").AddressList[0];
IPEndPoint ipEnd = new IPEndPoint(ipAddr,6000);
TcpListener listener = new TcpListener(6000);
listener.Start();
Console.WriteLine("--------------------------------");
Console.WriteLine(" Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ±â´Ù¸³´Ï´Ù.");
Console.WriteLine("--------------------------------");
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
while(true)
{
int rDataLength = ns.Read(rData,0,rData.Length);
if (rDataLength > 0)
{
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ>>{0}",Encoding.UTF7.GetString(rData,0,Class1.byteArrayDefrag(rData)+1));
ns.Write(rData,0,rData.Length);
}
}
}
public static int byteArrayDefrag(byte[] sData)
{
int endLength = 0;
for(int i=0; i< sData.Length ;i++)
{
if((byte)sData[i] != (byte)0)
{
endLength =i;
}
}
return endLength;
}
}
}
|
[Ŭ¶óÀ̾ðÆ®Ãø ¼Ò½º]
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientHighSocket
{
class Class1
{
static byte[] rData = new byte[1024];
static byte[] sData = new byte[1024];
[STAThread] static void Main(string[] args)
{
TcpClient client = new TcpClient();
client.Connect("127.0.0.1",6000);
NetworkStream ns = client.GetStream();
Console.WriteLine("--------------------------");
Console.WriteLine(" ¼¹ö¿¡ Á¢¼ÓÇÕ´Ï´Ù. ");
Console.WriteLine("--------------------------");
while(true)
{
if (ns.CanWrite)
{
Console.Write("¹ß¼ÛÇÒµ¥ÀÌÅÍ>>>");
sData = Encoding.UTF7.GetBytes(Console.ReadLine());
ns.Write(sData,0,sData.Length);
int rDataLength = ns.Read(rData,0,rData.Length);
if (rDataLength > 0)
{
Console.WriteLine("¼ö½Åµ¥ÀÌÅÍ>>{0}",Encoding.UTF7.GetString(rData,0,Class1.byteArrayDefrag(rData)+1));
}
}
}
}
public static int byteArrayDefrag(byte[] sData)
{
int endLength = 0;
for(int i=0; i< sData.Length;i++)
{
if((byte)sData[i] != (byte)0)
{
endLength =i;
}
}
return endLength;
}
}
}
|
±âÁ¸ÀÇ Socket Ŭ·¡½º·Î Á÷Á¢ ÄÚµùÀ» ÇØº¸¼Ì´ø ºÐÀ̶ó¸é Ưº°È÷ ¾î·Á¿î ºÎºÐµéÀº ¾ø¾úÀ» °ÍÀÔ´Ï´Ù.
´ÜÁö, TCP Ŭ·¡½ºÀÇ ÀÌÇØ°¡ Á¶±Ý ÇÊ¿äÇÒ »ÓÀÔ´Ï´Ù. À̰ÍÀ¸·Î ´ë° ¼ÒÄÏ¿¡ ´ëÇÑ °Á¸¦ 1´Ü¶ô ¸·À»
³»¸°°Í °°½À´Ï´Ù. ¹°·Ð ¸¹ÀÌ ºÎÁ·ÇÕ´Ï´Ù. »ç½Ç Àúµµ °øºÎÇϰí ÀÔ´Â ÀÔÀåÀ̶ó ¾Ö¸ÅÇϰí, ¼³¸íÀÌ ¾ÈµÇ´Â°Ç ÇÇÇØ°£°Íµµ ÀÖ°í -_-; °Á¸¦ ³Ê¹« ±æ°Ô ÇÏÁö ¾ÊÀ¸·Á°íº¸´Ï ¸î°¡Áö »©¸ÔÀº°Íµµ ÀÖ½À´Ï´Ù. °í¼öÁØ Udp ¼ÒÄÏÅë½Å°ú udp ¸¦ ÀÌ¿ëÇÑ ¸ÖƼij½ºÆ® Åë½Å(1:n) ÇÏÁö¸¸ Áß¿äÇѰÍÀº.. asp ½ÃÀý ¼ÒÄÏÀ» ¸¸µéÁö ¸øÇØ ÀÛ¾÷»ó ¾î¶°ÇÑ ºÒÀÌÀÍ? À» ´çÇϼ˰ųª -_-;;
"asp ·Î´Â ±×°Íµµ ¸øÇØ? ´Ï°¡ ¸øÇϴ°Š¾Æ³Ä?"´Â ½ÄÀÇ ¾ï¿ïÇÔÀ» °ÝÀ¸¼Ì´ø ºÐµé²²´Â ¼ÒÄÏÀ» ½ÃÀÛÇϴµ¥
´Ù¼Ò µµ¿òÀ» ÁÖÁö ¾Ê¾Ò³ª ½Í½À´Ï´Ù. ¹°·Ð ÀÌ ½Ã°£À¸·Î °Á°¡ ³¡³ª´Â °ÍÀº ¾Æ´Õ´Ï´Ù.
°Á´ °è¼ÓµË´Ï´Ù.
°ø¿ë(Àü¿ª) ¾î¼Àºí¸® ¿Í »ç¼³ ¾î¼Àºí¸®
¾î¼Àºí¸®¶õ ª°Ô ³ª¸¶ ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °¡Áö¼Ì´ø ºÐµéÀ̶ó¸é. ±â°è¾î¸¦ Àΰ£ÀÌ º¸±â ½±°Ô ¸¸µç ±âÈ£È ¾ð¾îÀÎ ¾î¼Àºí¸® ¶Ç´Â ±â°è¾î ½ÄÀ¸·Î ÀνÄÀ» ÇÏ°í °è½Ç°ÍÀÔ´Ï´Ù. .Net ¿¡¼´Â ±× ¾ð¾î ÀÚü¸¦ °¡¸®Å°´Â °Å °°Áö´Â ¾Ê½À´Ï´Ù. .Net ¿¡¼ÀÇ ¾î¼Àºí¸®´Â ½ÇÇàÆÄÀÏÀÇ ´ÜÀ§ÀÔ´Ï´Ù. .Net ÀÇ ÄÄÆÄÀÏÀ» °ÅÃÄ »ý¼ºµÈ MSIL(MicroSoft intermediate Language) ÄÚµåÀÇ EXE, DLL ÆÄÀϵéÀÔ´Ï´Ù.(»ç½ÇÀº ¾î¼Àºí ¸®°¡
MSILÄڵ带 Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ¾î¼Àºí¸®´Â MSIL ÄÚµå¿Ü¿¡µµ ÀÚ±âÀÚ½ÅÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â Meta Data, ¸®¼Ò½º µîÀ¸·Î ±¸ºÐµÇ¾î ÀÖ½À´Ï´Ù.-¾Æ·¡)
¸Å´Ï Æä½ºÆ®(¸ÞŸ µ¥ÀÌÅÍ ¿µ¿ª)
|
MSIL ÄÚµå |
¸®¼Ò½º |
¾î¼Àºí¸® ¸ÞŸµ¥ÀÌÅÍ |
Çü½Ä ¸ÞŸ µ¥ÀÌÅÍ |
MSIL ÄÚµå |
ºñ ½ÇÇà ºÎºÐ |
°£´ÜÇÏ°Ô ¼³¸íÇÏÀÚ¸é, ¾î¼Àºí¸® ¸ÞŸµ¥ÀÌÅÍÀÇ °æ¿ì ÀÚ½ÅÀÌ Çʿ信 ÀÇÇØ ÂüÁ¶µÈ ´Ù¸¥ ¾î¼Àºí¸®µéÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â µ¥ÀÌÅͺ£À̽º À̸ç, Çü½Ä ¸ÞŸ µ¥ÀÌÅÍÀÇ °æ¿ì ÀÚ½ÅÀÇ ¾î¼Àºí¸®¿¡ ´ëÇÑ Self Description À̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ÈçÈ÷ .Net ÀÇ ÄÚµå´Â MSIL ÄÚµåÀÌ´Ù ¶ó°í ¸»ÇÏ´Â MSIL ÄÚµå(ÄÄÆÄÀÏµÈ ¼Ò½º(?) -> ´Ù½Ã JIT ¿¡ ÀÇÇØ ·±Å¸ÀÓÀÌ ÄÄÆÄÀÏ µÇ°ÚÁö¿ä) ±×¸®°í ¾ÆÀÌÄÜÀ̳ª À̹ÌÁö¿Í °°Àº ½ÇÇàÀ» Á¦¿ÜÇÑ µ¥ÀÌÅ͵éÀ» ´ã°í ÀÖ´Â ¸®¼Ò½º ºÎºÐÀÌ ÀÖ½À´Ï´Ù.
ÀÚ, DLL ÄÄÆ÷³ÍÆ®´Â À¥ÇÁ·Î±×·¡¹Ö »Ó¸¸¾Æ´Ï¶ó. .Net À̵ç C++ ÀÌ´ø º£ÀÌÁ÷ÀÌµç ¸ðµç ¾ð¾îµéÀÌ ÂüÁ¶µÉ¼ö ÀÖ´Â ÇϳªÀÇ ½ÇÇàÆÄÀÏÀÇ ´ÜÀ§°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ DLL ÆÄÀϵéÀÌ ÇϳªÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¸¸ ƯÈ÷ ÂüÁ¶µÇ¾î »ç¿ëµÉ °ÍÀ̳Ä. ¾Æ´Ï¸é ¿©·¯ ¾îÇø®ÄÉÀ̼ÇÀÌ °øÅëÀûÀ¸·Î »ç¿ëµÈ´Â DLL ÆÄÀÏÀ̳Ŀ¡ µû¶ó °ø¿ë¾î¼Àºí¸®¿Í »ç¼³ ¾î¼Àºí¸® ·Î ±¸ºÐµÉ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿ì¸®°¡ ASP¿¡¼ Regsvr32 ¸¦ ÅëÇØ DLL ÆÄÀÏÀ» ·¹Áö½ºÆ®¸®¿¡ µî·ÏÇÏ°í »ç¿ë µÇ´ø °ÍÀÌ °ø¿ë¾î¼Àºí¸®¶ó º¼ ¼ö ÀÖÀ¸¸ç, °ÔÀÓÀ̳ª ¾î¶°ÇÑ ÀÏ¹Ý ÀÀ¿ëÇÁ·Î±×·¥¿¡¼¸¸ µî·ÏµÇ¾î Ȱ¿ëµÇ´Â DLL ÀÇ °æ¿ì¸¦ »ç¼³ ¾î¼Àºí¸®¶óÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¼³ ¾î¼Àºí¸®´Â ·¹Áö½ºÆ®¸®¿¡ µî·ÏÇÒ ÇÊ¿ä¾øÀÌ ÂüÁ¶ ¸Þ´º¸¦ Ŭ¸¯Çؼ ÇÊ¿äÇÑ ÄÄÆ÷³ÍÆ®¸¦ ÂüÁ¶Çؼ ±×´ë·Î ¾²´Â °ÍÀÔ´Ï´Ù
¿ì¸®´Â À¥ ÇÁ·Î±×·¡¸ÓÀ̱⠶§¹®¿¡ À¥°ú °ü·ÃµÇ¾î À̾߱â ÇØº¸°Ú½À´Ï´Ù.
±âÁ¸¿¡ ASP·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é ASP ³»¿¡¼ ó¸®ÇÒ ¼ö ¾ø´Â ºÎºÐ Áö±Ý ÀúÈñ°¡ ¹è¿ì°í ÀÖ´Â ¼ÒÄÏ
°ü·ÃÀÌ ¶ó´ø°¡ ĸ½¶ÈÇÏ¿© µ¹¸®°í ½ÍÀº ¸ðµâµîÀ» ¶óÀ̺귯¸®(DLL) ·Î ¸¸µé¾î ³»°í Regsvr32 ¸¦ ÅëÇØ ·¹Áö½ºÆ®¸®¿¡ µî·Ï ÇϰԵ˴ϴÙ. À̰ÍÀº °ø¿ë¾î¼Àºí¸®ÀÇ °æ¿ì°¡ µÇ°Ú½À´Ï´Ù. °ø¿ë¾î¼Àºí¸®ÀÇ °æ¿ì´Â, DLLÀ» ÂüÁ¶ ÇϰíÀÚ ÇÏ´Â ÆÄÀϰú °°Àº Æú´õ¿¡ ¾ø¾îµµ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.(»ç¼³ ¾î¼Àºí¸®´Â °°ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.) ´ë½Å ·¹Áö½ºÆ®¸®¿¡ µî·ÏÀ» ÇØÁà¾ß ÇÏ´Â ÀýÂ÷°¡ ÇÊ¿äÇÕ´Ï´Ù.(»ç¼³ ¾î¼Àºí¸®´Â ÀÛ¾÷ ÆÄÀϰú ÇÔ²² ³Ö¾î µÎ¸é µË´Ï´Ù.) ·¹Áö½ºÆ®¸®¿¡ µî·ÏµÈ DLLÀÇ ÂüÁ¶´Â asp ÀÇ Server °´Ã¼¸¦ ÅëÇØ °´Ã¼¸¦ »ý¼ºÇس»°í ¸¸µé¾îÁø ÀνºÅϽº´Â ¸Þ¼Òµå¿Í , ¼Ó¼ºµîÀ» ÅëÇØ Á¤º¸¸¦ ´Ù·ç°Ô µË´Ï´Ù.
.Net Framework ȯ°æ¿¡¼ µ¹¾Æ°¡´Â .Net ¾î¼Àºí¸®ÀÇ °æ¿ì °ü¸®ÄÚµå ¶ó°í ºÎ¸¥´Ù¸é, .Net ÀÌ ¾Æ´Ñ c++ À̳ª VB ȯ°æ¿¡¼ »ý¼ºµÈ ½ÇÇàÆÄÀÏÀº ºñ°ü¸® ÄÚµå¶ó°í ºÎ¸£°Ô µÈ´Ù´Â°ÍÀ» ÀÌ¹Ì °øºÎÇϽźеéÀ̶ó¸é ¾Æ½Ç °ÍÀÔ´Ï´Ù. ¹®Á¦´Â .Net ÀÇ °ø¿ë¾î¼Àºí¸®ÀÇ °æ¿ì ±âÁ¸ÀÇ DLL °ú °°Àº ¹æ½ÄÀ» ÅëÇØ ASP¿¡¼ »ç¿ëµÉ ¼ö°¡ ¾ø½À´Ï´Ù. .Net ¿¡¼ÀÇ ÆÄÀÏ °ü¸® ¹æ¹ýÀº ·¹Áö½ºÆ®¸®¸¦ ÀÇÁ¸ÇÏÁö ¾Ê´Âµ¥, ÀÌ´Â ¾î¼Àºí¸® ÀÚ½ÅÀÌ ¼¼úÇü½ÄÀÇ ¸ÞŸµ¥ÀÌÅÍ Á¤º¸ °¡Áö°í Àֱ⠶§¹®¿¡ ´õ ÀÌ»ó º¹ÀâÇÑ ¹æ½ÄÀÇ ·¹Áö½ºÆ®¸®¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â °ÍÀÔ´Ï´Ù. ´ë½Å ÀÌ·¯ÇÑ ¾î¼Àºí¸®ÆÄÀϵ鿡 ´ëÇÑ °ü¸®°¡ ÇÊ¿äÇѵ¥ ±×°ÍÀº Global Assembly Cache ¶ó°í ÇØ
¼ C:\winnt\Assembly Æú´õÀÇ Shell Extension¿¡ ÀÇÇØ Ưº°ÇÏ°Ô °ü¸®°¡ µÇ°í ÀÖ½À´Ï´Ù. ±×·³ ¹®Á¦°¡ ÇѰ¡Áö »ý±â°Ô µÇ´Âµ¥
.Net Àº ·¹Áö½ºÆ®¸®¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â, ¸ÞŸÁ¤º¸¿Í Global Assembly ¸¦ ÅëÇØ DLL À» °ü¸®Çϰí, ASP
¿¡¼ »ç¿ëµÉ °ø¿ë¾î¼Àºí¸®´Â ·¹Áö½ºÆ®¸®¿¡ µî·ÏÀ» ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
±×·¡¼ .Net ¿¡¼´Â DLL ÄÄÆ÷³ÍÆ®¸¦ ±âÁ¸ÀÇ COM °ú °°ÀÌ ÀÛµ¿½ÃŰ°Ô Çϱâ À§ÇÑ ·¹Áö½ºÆ®¸® µî·Ï¹æ¹ýÀ¸·Î RegAsm.Exe ¸¦ ÀÌ¿ëÇÏ°Ô µË´Ï´Ù.
c:>Regasm Pluginn.dll [¼³Ä¡]
c:>Regasm /u Pluginn.dll [Á¦°Å]
»ç¿ë¹ýÀº Regsvr32 ¿Í °°ÀÌ °ú °°Àº ½ÄÀ¸·Î ·¹Áö½ºÆ®¸®¿¡ µî·ÏÀ» ÇÏ°Ô µË´Ï´Ù. ±×¸®°í °ø¿ëÀ¸·Î »ç¿ëµÉ DLL Àº Global Assemly ¿¡ µî·ÏÀ» ÇÏ°Ô µÇ´Âµ¥ ±×°ÍÀº GacUtil ¿¡ ÀÇÇØ Global Assembly Cache ¿¡ µî·ÏÀ» ÇÏ°Ô µË´Ï´Ù. »ç¿ë¹æ¹ýÀº,
c:> GacUtil /i Pluginn.dll [¼³Ä¡]
c:> GacUtil /u Pluginn.dll [Á¦°Å]
[C:\Winnt\Assembly °æ·Î·Î Á¢±ÙÇØ¼ GAC ¿¡ µî·ÏµÈ ÄÄÆ÷³ÍÆ® ¸ñ·ÏÀ» º»°ÍÀÔ´Ï´Ù.]
ÀÚ ¿©±â±îÁö ÀÌÇØÇϼÌÀ¸¸é Áß¿äÇѰÍÀÌ Çϳª ³²¾Æ Àִµ¥.. ±×°ÍÀº GAC ¿¡ µî·ÏµÉ Assembly µéÀÇ
¹öÀü°ü¸®¸¦ À§ÇÑ Strong NameÀÔ´Ï´Ù. ÇØ¼®ÇÏ¸é °·ÂÇÑ À̸§À¸·Î ºÒ¸®¿ì´Â À̰ÍÀº Public۸¦ ÀÌ¿ëÇÑ
º¸¾È ¹× ¹öÀü°ü¸®¸¦ À§ÇÑ ÇØ¹ýÀ» Á¦½ÃÇØÁÖ°í ÀÖ½À´Ï´Ù. ÀÚ ÀÏ´Ü SN À» »ý¼ºÇÏ´Â °úÁ¤À» º¸¸é,
ÀÌ·¸°Ô µÇ¸é Àú¸¸ÀÇ °íÀ¯ÇÑ pluginn.key ¶ó´Â Ű ÆÄÀÏÀ» °®°Ô µÇ°í, À̰ÍÀº Gac ¿¡ µî·ÏµÈ Assembly ÆÄÀÏÀÇ À§¿¡ º¸½Ã¸é ¡°Public Key Token" Ç׸ñ¿¡ ³ªÅ¸³ token À» »ý¼ºÇϴµ¥ ¾²ÀÔ´Ï´Ù.
ÀÌ·¸°Ô gac ¿¡ µî·ÏµÈ ÄÄÆ÷³ÍÆ®´Â ¹öÀü°ü¸®±â´Éµµ Á¦°øÇÏ°Ô µÇ´Âµ¥,
¿¹¸¦ µéÀÚ¸é, A ¶ó´Â ¾îÇø®ÄÉÀ̼ǿ¡¼ test.dll ¿¡ sum() À̶ó´Â ¸Þ¼Òµå¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. °³¹ßÀÚ¿¡ ÀÇÇØ test.dll Àº ¾÷±×·¹À̵尡 µÇ¾î test.dll ¿¡ sum() ÀÌ ¾Æ´Ñ sum2() ·Î ¸Þ¼Òµå°¡ º¯°æÇÏ°Ô µÇ¾ú´Ù¸é
±âÁ¸ÀÇ A ¾îÇ÷¹ÄÉÀ̼ÇÀº DLL Hell ¿¡ ºüÁö°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ°Ç ´ÜÀûÀÎ ¿¹ÀÇ °æ¿ìÁö¸¸ ¼ö¸¹Àº ¾îÇø®
ÄÉÀ̼ÇÀÌ À©µµ¿ì¿¡ ¼³Ä¡µÇ¸é¼, ·¹Áö½ºÆ®¸®¿¡ ¼ö¾øÀÌ µî·ÏµÇ°í »èÁ¦µÇ´Â DLL ÀÇ °æ¿ì¶ó¸é ¾ê±â°¡ ´Þ¶óÁö°Ô µË´Ï´Ù. (ÀÌ¹Ì °Ý¾î º¸½ÅºÐµéµµ ÀÖÀ¸¸®¶ó »ý°¢µË´Ï´Ù. Àú´Â À¥Âʸ¸ ÇÏ´Ùº¸´Ï º°·Î..-_-)
ÀÌ·¯ÇÑ Ãæµ¹Çö»óÀ» ÇÇÇϱâ À§ÇØ .Net ¿¡¼´Â °¢ ¾î¼Àºí¸®ÀÇ ÆÄÀÏ ¼³¸í¼ÀÎ AssemblyInfo.cs ÆÄÀÏÀ»
°¡Áö°Ô µÇ¸ç,
SN.EXE ¿¡ »ý¼ºµÈ Ű ÆÄÀÏÀº ¾î¼Àºí¸®ÀÇ ¸ÞŸÁ¤º¸ÀÎ AssemblyInfo.cs ÆÄÀÏ¿¡ µî·ÏµÇ¾î
ÄÄÆÄÀÏ µÇ°Ô µË´Ï´Ù. ¹°·Ð ¾Æ·¡¿Í °°ÀÌ ¹öÀüµµ ÀûÀ» ¼ö°¡ ÀÖ½À´Ï´Ù.
ÀÌ·¸°Ô sn ۸¦ Æ÷ÇÔÇÏ¿© ÄÄÆÄÀÏµÈ ¾î¼Àºí¸®°¡ µÇ¾î¾ß.. ºñ·Î¼Ò GAC ¿¡ µî·ÏÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
Áï, .Net ¿¡¼´Â °°Àº DLL ÀÌ¶óµµ ÆÄÀϸí°ú ¹öÀü ±×¸®°í SN(StrongName) ¿¡ ÀÇÇØ¼ ¾î¼Àºí¸®¸¦
´Ù¸£°Ô º¸°ÔµÇ¸ç, Ãæµ¹À» ÃÖ¼ÒÈ Çϵµ·Ï ÇѰÍÀÔ´Ï´Ù. »ç½Ç À̺κп¡ ´ëÇØ¼´Â ´õ ¸¹Àº ³»¿ëÀ» ´Ù·ç¾î¾ß
ÇÏÁö¸¸ ¿ì¸®´Â.Net ¼ÒÄÏÀ¸·Î »ý¼ºµÈ DLL ÄÄÆ÷³ÍÆ®¸¦ COM À¸·Î ³»º¸³»¼ ASP¿¡¼ »ç¿ëÇϴ°ÍÀÌ ¸ñÀûÀ̱⠶§¹®¿¡ ÀÌÁ¤µµ¸é ÃæºÐÇÑ ³»¿ëÀÌ µÉ²¨ °°½À´Ï´Ù.
¸¹ÀÌ Çì±ò¸®½Å´Ù¸é ´ÙÀ½ °Á¶§ »ç¼³¾î¼Àºí¸®¿Í , °ø¿ë¾î¼Àºí¸®¸¦ Á÷Á¢ ¿¹·Î ÇØº¸´Â ¼¼¼ÇÀ» °¡Á®º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
±×¸®°í Ãß°¡·Î ½ºÆ®¸²¿¡¼ÀÇ ¿£ÄÚµù ¹æ½ÄÀÎ UTF7,UTF8¿¡ ´ëÇØ ¾Ë¾Æº¸·Á°í ÇÕ´Ï´Ù. ¹®ÀÚ Encoding ¿¡ ´ëÇØ¼´Â ¾î¶² ºÐÀÌ ¸ÞÀÏ·Î Áú¹®À» ÇØÁ̴ּµ¥.. À̺κÐÀ» °Á·Î
´Ù·ç´Â°Ô ÁÁÀ»°Å¶ó°í »ý°¢ÀÌ µé¾î Àúµµ Á» ´õ °øºÎÇÏ°í º¸Ãæ¿¡¼ ´ÙÀ½°Á¿¡ Ãß°¡Çϵµ·Ï
ÇÏ¿´½À´Ï´Ù. ¸ÞÀÏÀ» Áֽźв²´Â °³ÀÎÀûÀ¸·Î ¸ÞÀÏÀ» µå¸®Áö ¸øÇØ Á˼ÛÇϰí¿ä, ´ÙÀ½ °Á¸¦ ÅëÇØ
±Ã±ÝÁõÀ» ÇØ°áÇϼÌÀ¸¸é ÁÁ°Ú½À´Ï´Ù.
´ÊÀº °Á ³¡±îÁö Àоî Áּż °¨»çÇÕ´Ï´Ù.
Back
|