´ÙÀÌ·ºÆ® Ç÷¹ÀÌ·Î ¸¸µç°×À»¿ä (ÇÑ 10Àοë±îÁö ¸¸µå·Á´Âµ¥¿ä)
 ¸¸µé¸é 10¸íÁ¤µµ Á¢¼ÓÇÒ¤µ ÀÖ´Â ¼­¹ö°¡ ÇÊ¿äÇÏÁö¾Ê³ª¿ä?
 ¾Æ´Ï¸é ±×³Éµµ µÇ³ª¿ä?
 2¸íÀÌ»óÇÒ¶§ Á¢¼ÓÇÒ ¼­¹ö¸¦ ±¸Çϴ¹ýÇϱ¸¿ä
 °Å±ä ¾î¶»°Ô Á¢¼ÓÇØ¾ß ÇÏ´ÂÁö °¡¸£ÃÄÁÖ¼¼¿ä  

 ´ÙÀÌ·ºÆ® Ç÷¹À̸¦ »ç¿ëÇÒ°æ¿ì ±âº»ÀûÀ¸·Î
 0¹ø Ç÷¹À̾î.. Áï Á¦ÀÏ Ã³À½¿¡ ¸¸µå´Â »ç¶÷ÀÌ
 ¼­¹ö±â´ÉÀ» ÇÏ°Ô µË´Ï´Ù.. (ÀÌ°É ¾à°£ ÀÀ¿ëÇÏ¸é ¼­¹ö
 Àü¿ëÀ» µû·Î ¸¸µé¼öµµ ÀÖ¾î¿ä...)
 ±×·¯´Ï±ñ ²À ¼­¹öÀü¿ëÀÌ ÇÊ¿äÇÏÁø ¾ÊÁÒ..   
 2¸í ÀÌ»óÇÒ¶§ Á¢¼ÓÇÒ ¼­¹ö¸¦ ±¸ÇÏ´Â ¹ýÀº..
 Host·Î ÇÒ°ÍÀÌ³Ä JoinÀ» ÇÒ°ÍÀ̳ĸ¦ ¹°¾îºÁ¾ß ÇÕ´Ï´Ù.
 ±×·¡¼­ JoinÀ̶ó¸é ¼½¼Ç¿­°Å ÇÔ¼ö¸¦ »ç¿ëÇØ¼­ ¾ò¾î³À´Ï´Ù.
 TCP/IP °°Àº °æ¿ì¿£ ÁÖ¼Ò¸¦ ¸ÕÀú ÀÔ·ÂÇØ¾ß Çϱ¸¿ä..
 ´ÙÀÌ·ºÆ® Ç÷¹À̸¦ »ç¿ëÇÑ ¿¹Á¦¸¦ ½ÇÇàÇØº¸½Ã¸é
 ±Ý¹æ ÀÌÇØ°¡ °¡½Ç²¨¿¡¿ä...¼Û±æ¼·  (SaemSong)

directplay(lobby)
¾È³çÇϼ¼¿ä!
¾Æ·¡ ¾î´ÀºÐ²²¼­ Lobby´Â 3a¿¡¼­ Áö¿øÀÌ µÇÁö ¾Ê´Â´Ù°í ¸»¾¸ Çϼ̴µ¥,
Âø¿À°¡ ÀÖ´Â °Í °°±º¿ä.... 3a ¿¡¼­ Áö¿øÀÌ µË´Ï´Ù.
Àü óÀ½ ¿¡´Â lobby¸¦ »ç¿ëÇÏÁö ¾Ê°í ÇÁ·Î±×·¥ ÇÏ·Á ÇßÀ¸³ª...
¾Æ·¡ ¾î´ÀºÐ°ú ¸¶Âù °¡Áö·Î  ¾î·Á¿î ÄݹéÇÔ¼ö·Î ÀÎÇØ
°á±¹Àº lobby¸¦ »ç¿ë ÇÏ¿´½À´Ï´Ù.
·Îºñ¸¦ »ç¿ëÇÏ´Ï Æí¸® ÇÕ´Ï´Ù. ÄÚµå ¼öµµ ¸ÄÀÌ ÁÙ¾îµé°í ¾µµ¥¾ø´Â
Äݹé ÇÔ¼öµµ ¾ø°í ÇÏ´Ï.... Âü ½±´õ±º¿ä...
ÇÏÁö¸¸ Ãßõ ÇÏ°í ½ÍÁö´Â ¾Ê½À´Ï´Ù.
·Îºñ¸¦ »ç¿ëÇØ¼­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϸé ÀÚ½ÅÀÌ Â§ ÇÁ·Î±×·¥À»  ½ÇÇà ½Ã۱â Àü¿¡ ¸ÕÀú
·Îºñ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃŰ´Â ¹ø°Å·Î¿òÀÌ ÀÖ°í...
°¡Àå ±ÍÂü¤¾Àº °ÍÀº ÀÚ½ÅÀÌ Â§ ÇÁ·Î±×·¥À» registry¿¡ µî·ÏÀ» ÇØ¾ß ÇÕ´Ï´Ù.
±×·¯´Ï ·Îºñ¸¦ »ç¿ëÇÏ´Â °ÍÀº À©µµ ÇÁ·Î±×·¥À» Àß ¸ð¸£´Â »ç¶÷¿¡°Ô
¾à°£ÀÇ Æí¸®ÇÔÀº ÀÖÀ» ¼ö ÀÖÀ¸³ª ÈǸ¢ÇÑ °ÔÀÓÀ» Á¦ÀÛ Çϴµ¥´Â
¾à°£ÀÇ ¿ÁÀÇ Æ¼°¡ Á¸ÀçÇÕ´Ï´Ù.
µÇµµ·Ï À©µµÇÁ·Î±×·¥À» ¿­½ÉÈ÷ ÇØ¼­ Direct Play¿¡ Á÷Á¢ Á¢±ÙÇÏ´Â
½Ç·ÂÀ» Ű¿ì´Â °ÍÀÌ ÁÁÀ»µí Çϱº¿ä...
Âü°í·Î ·Îºñ¶ó´Â °ÍÀº ÇѸ¶µð·Î ¿ÜºÎ ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
Direct Play  registry¿¡ µî·ÏµÈ °ÔÀÓµéÀ» Àаí
»ç¿ëÀÚ°¡ ¼±ÅÃÇÑ °ÔÀÓ ÇÁ·Î±×·¥À» ½ÇÇà ½Ãŵ´Ï´Ù.
±×·¯¸é ·Îºñ´Â ½ÇÇàµÈ °ÔÀÓ¿¡ ³ÝÆ®¿÷¿¡ ¿¬°áµÈ »óŸ¦ Á¦°ø ÇØÁÝ´Ï´Ù.
±×·³ °ÔÀÓ¿¡¼­´Â ´Ü¼øÈ÷ Direct Play °´Ã¼¸¸À» »ý¼º ½ÃŰ¸é µÇÁÒ

½¬¿î À̾߱⸦ Âü ¾î·Æ°Ô Çß±º¿ä.
Âü Áú¹®ÀÌ ÀÖÀ¸½Ã¸é ¿©±â·Î ¸ÞÀÏ º¸³»Áö ¸¶¼¼¿ä.
¾Æ·¡ ÁÖ¼Ò·Î ¸ÞÀÏ º¸³» ÁÖ½Ã¸é ¾Æ´Àµ¥±îÁö ´äÇØµå¸®°Ú½À´Ï´Ù.
±×·³ ¾È³çÈ÷...
tom5@iclab.chungnam.ac.kr

³×Æ®À¨ °ÔÀÓÀ» ¸¸µé·Á´Â Ãʺ¸ÀÚÀÔ´Ï´Ù.
 ¿ä»õ ¿ì¸®³ª¶ó RPGµµ ¹èƲ³ÝÀ» Áö¿øÇÏ´Â °ÔÀÓÀÌ
 ÀÖ´õ±º¿ä.. ±×·±µ¥ ±×·± °ÔÀÓÀ» ¾î¶»°Ô ¸¸µé¾ú´ÂÁö
 ±Ã±ÝÇÕ´Ï´Ù.
 NT¼­¹ö¸¦ ±¸ÃàÇϰí DirectPlay Lobby¸¦ ÀÌ¿ëÇϸé
 °¡´ÉÇÒ±î¿ä...? Direct Play°¡ 8¸í±îÁö´Â °ßµ®³»´Ï±ñ
 ¸¸µé¼ö ÀÖÁö ¾ÊÀ»±î¿ä...!
 ¸Ó±×°ÔÀÓÀÌ ¾Æ´Ñ ÀÏ¹Ý ½ºÅ¸³ª µð¾Æºí·Î ±×¸®°í
 ¿ä»õ ¿ì¸®³ª¶ó¿¡ ³ª¿À´Â RPGÁß ¹èƲ³ÝÀÌ °¡´ÉÇÑ
 °ÔÀÓÀÇ ¿ø¸®¸¦ ¾Ë°í ½Í½À´Ï´Ù.. °í¼ö´Ô ºÎʵ右´Ï´Ù.
                                                      

¸¸¾à,blizzard»çÀÇ battle.netÀ» ÁöĪÇϴ°Ŷó¸é,¾ê±â°¡ ´Ù¸¨´Ï´Ù. ±×°É ¸¸µç ȸ»ç¿¡
 ¼­
 Áö¿ø °ÔÀÓÀ» À§ÇÑ sdk³ª ½ºÆåÀ» °ø°³Çϰí,¾²´Â°É Çã¿ëÇØ¾ß ÇÕ´Ï´Ù. ¹èƲ³ÝÀ̶ó
 ºÒ¸®´Â ´Ù¸¥ °ÔÀÓ ·Îºñ ¼­¹öµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. °Å±â¿Í Çù¾àÇϰųª ÇØ¼­ ¶óÀ̼¾½º¸¦
 
 °¡Á®¿À°Å³ª ¸»°Å³ª ÇÑ ´ÙÀ½¿¡ ±× ½ºÆåÀ» ±¸ÇØ¾ß ÇÕ´Ï´Ù.
 ´ÙÀÌ·ºÆ®Ç÷¹ÀÌ´Â ±×·± ¸é¿¡¼­ À¯¸®ÇÏÁÒ. ÀÌ¹Ì ±× ½ºÆåÀ» ¸¶À½´ë·Î ¾²µµ·Ï °ø°³¸¦
 ÇسùÀ¸´Ï±î¿ä. ±×·¯¹Ç·Î,Ưº°ÇÑ °è¾àÀÌ ¾ø´Ù¸é,´ÙÀÌ·ºÆ®Ç÷¹ÀÌ·Î ¸¸µé°í ±×°ÍÀÇ
 ·Îºñ¿¡ ´ëÇÑ ½ºÆåÀ» ¸ÂÃç¼­ °ÔÀÓÀ» ¸¸µé¾ú´Ù¸é ´ÙÀÌ·ºÆ®Ç÷¹À̸¦ Áö¿øÇÏ´Â ·Îºñ
 ¼­¹ö, ¿¹¸¦ µé¾î ±¹³»¿¡ ¸î ÀÖ´Ù´Â ¹èƲ³ÝÀ̳ª mplayer°°Àº °÷µéÀ» Áö¿øÇÒ°Ì´Ï´Ù.
 ÀÌ·¯ÇÑ ·Îºñ ¼­¹ö¿¡ ´ëÇÑ ÀÚ·á´Â µû·Î ã¾Æº¸¼¼¿ä..

¾È³çÇϼ¼¿ä...
 ¸î´ÞÀü¿¡ ¿Ã·È´ø Áú¹®Àε¥¿ä ¾ÆÁ÷µµ ÀÌ ¹®Á¦¶«½Ã Çì¸Å°í ÀÖ´Â °ü°è·Î
 ´Ù½Ã Áú¹®À» ¿Ã¸³´Ï´Ù....
 Áú¹®Àº ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ¿¡ °üÇÑ Áú¹®Àä....
 ´ÙÀÌ·ºÆ® Ç÷¹À̸¦ ÀÌ¿ëÇØ¼­ ¸¸µç °£´ÜÇÑ Äڵ尡 Àְŵç¿ä...
 ÀÌ°É ½ÇÇàÀ» ½ÃŰ¸é ¿¹¸¦ µé¾î 2¸íÀÌ Á¢¼ÓÀ» Çϸé¿ä....
 Ã·¿¡´Â Àß µ¹¾Æ°¡°Åµç¿ä....±×·±µ¥ Á¶±Ý¸¸ ´õ ÀÖÀ¸¸é °ÔÀÓÀÇ ÁøÇà¼Óµµ°¡ ´À·ÁÁý
 ´Ï´Ù....´Ù½Ã ¸»¾¸µå¸®¸é....³»°¡ ¿©±â¼­ ÀúÂÊÀ¸·Î À¯´ÖÀ» ¿Å±â¸é....ÀúÂÊ ÄÄÇ»ÅÍ

 ¿¡¼­´Â ¸îÃÊÈÄ¿¡ À̵¿À» ÇÕ´Ï´Ù....ÀÌ»óÇѰÍÀº ÷¿¡´Â µ¿ÀÛÀ» Á¦´ë·Î ÇÑ´Ù´Â
 °ÍÀÔ´Ï´Ù...¾îµð¿¡ ¿øÀÎÀÌ ÀÖÀ»±î¿ä....?
 ¾Æ½Ã´ÂºÐÀº °¡¸£ÃÄ Áֽøé Á¤¸» °¨»çÇϰڽÀ´Ï´Ù...

Á¦°¡ º¸±â¿¡´Â Áú¹®ÇϽŠºÐÀÌ ¹º°¡¸¦ À߸øÇÑ °Í °°½À´Ï´Ù.
 È¤½Ã,°ÔÀÓ ·çÇÁ¿¡¼­ ÀÌ·¸°Ô ó¸®ÇÑ°Ô ¾Æ´Ñ°¡ ½Í³×¿ä.
 while(1)
 {
 °ÔÀÓ ÁøÇà,·£´õ¸µ µîµî..
 µ¥ÀÌÅÍ ¼ö½Å ¹× 󸮸¦ 1ȸ¸¸ ÇÑ´Ù.
 }
 ÀÌ·¯¸é,½Ã°£ÀÌ Áö³ª¸é °ÔÀÓÀÌ ¹ö¹÷´î°Ì´Ï´Ù. ÀÌ·¸°Ô °íÄ¡¼¼¿ä.
 while(1)
 {
 °ÔÀÓ ÁøÇà,·£´õ¸µ µîµî..
 µ¥ÀÌÅÍ ¼ö½Å ¹× 󸮸¦ ´õ ÀÌ»ó ó¸®ÇÒ°Ô ¾øÀ»¶§±îÁö ÇѲ¨¹ø¿¡ ´Ù ÇÑ´Ù.

 }

 

µà¾ó ¼Ò½º Áú´ä

 #define REFGUID             const GUID &
 #endif // !_REFGUID_DEFINED
 #ifndef _REFIID_DEFINED
 #define _REFIID_DEFINED
 #define REFIID              const IID &
 #endif // !_REFIID_DEFINED
 #ifndef _REFCLSID_DEFINED
 #define _REFCLSID_DEFINED
 #define REFCLSID            const CLSID &
 #endif // !_REFCLSID_DEFINED
 #ifndef _REFFMTID_DEFINED
 #define _REFFMTID_DEFINED
 #define REFFMTID            const FMTID &
 #endif // !_REFFMTID_DEFINED
 #else // !__cplusplus
#ifndef _REFGUID_DEFINED
 #define _REFGUID_DEFINED
 #define REFGUID             const GUID * const
 ..ÀÌ·± ºÎºÐÀÌ wtypes.h¿¡ Àֳ׿ä.
 ±×·¯´Ï±î,C++¿¡¼­´Â GUID&°¡, ¸®ÆÛ·±½º¶ó´Â°Ô ¾ø´Â C¿¡¼­´Â GUID*¸¦ ¾²´Â±º¿ä.
 dplay»Ó¸¸¾Æ´Ï¶ó ¾Ïư REFGUID¸¦ ¾²´Â°Ç ¸ðµÎ ÇØ´çµÇ´Â ¹®Á¦ÀÎ°Í °°±º¿ä.
 ÀÌ·¸°Ô ÇØº¸½Ã¿ä..
 #if defined(__cpl

usplus)
 #define MYREFGUID             const GUID * const
 #endif
 ÀÌ°É ³Ö°í ÀÌÁ¦ºÎÅÍ´Â MYREFGUID¸¦ ¾²´Â°Ì´Ï´Ù. ±×·¡µµ REFGUID¿Í ¾ù°¥¸®´Â ºÎºÐÀº
 ¿ª½Ã³ª ²¿ÀÏÅ״ϱî.. °¡Àå ¸¸¸¸ÇѰÍÀº C³Ä C++³Ä¿¡ µû¶ó ºÐ·ùÇØ¼­ ÀÛ¾÷ÇÏ½Ã´Â°Ô ¾î
 ¶³±î¿ä? ¼­·Î ÀÏÀåÀÏ´ÜÀ̴ϱî ÁÁÀº ¹æ¹ýÀº ½º½º·Î °áÁ¤Çϼ¼¿ä.
                                        ¿¤¶õ    
°á±¹ Á¦°¡ ¼Ò½º¸¦ Á¤È®È÷ ºÐ¼®ÇÏÁöµµ ¸øÇϰí Áú¹®À» ¸ÕÀú.
 ÇÏÇÏ.Á˼Û..
 Èì..
 ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ ½áº¸½ÅºÐÀÌ ¾ø³ª...
 Àú¸¸ ¸Ç¶¥¿¡ ÇØµùÇϴ°ÍÀº ¾Æ´ÑÁö..À̰Å..
 °á±¹..
 SendSync ¸Þ¼¼Áö°¡ °ÔÀÓ·çÇÁÁß ½Ã°£¿¡ ¸ÂÃç ´Ù¸¥Ç÷¹ÀÌÇÑÅ×.
 º¸³»Áö´Âµ¥.
 À̸޼¼Áö°¡ óÀ½ È£ÃâµÇ¸é.
 ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­´Â DPlaySetPlayerData·Î µî·Ï½ÃƼ´õ±º¿ä.
 Ã³À½¸¸..
 ÇÏÇÏ
 ÀÌ°É ¸øºÃ´Ù´Ï..
 Èì..Áö±Ý Á¦°¡ ¸»Çϴ°ÍÀº DEUL ¿¹Á¦ÇÁ·Î±×·¥À» ¸»Çϴ°ÍÀÔ´Ï´Ù.
 ±×·±µ¥         
ÇѰ¡Áö Áú¹®ÀÌ ¶Ç »ý±â³×¿ä.
 ´äº¯Á» ÇØÁÖ¼¼¿ä.
 DPlaySetPlayerData À̰ɾ²¸é
 ÇѸ¶µð·Î ´ÙÀÌ·ºÆ®Ç÷¹ÀÌ·Î ¿ÀºêÁ§Æ® °ü¸®¸¦ Ç϶ó´Â ¸»Àε¥.
 Èì..
 º°·Î ¾²°í ½ÍÁö¾Ê´õ±º¿ä.
 DPlaySetPl

ayerData
 À̰ųª.
 DPlayEnumPlayers
 ÀÌ·±°ÍÀ» ¾µºÁ¿¡ ÀÚü ¿£ÁøÀ» ¸¸µé¾î ¾²´Â°ÍÀÌ
 À§ÇÔ¼ö ¾È¾²°íµµ dp »ç¿ëÇÒ¼ö ÀÖÁÒ..
 ÀÌ°Ô Áú¹®ÀÔ´Ï´Ù.
                 
¾È¾²°íµµ ÃæºÐÈ÷ ¾µ¼ö ÀÖ½À´Ï´Ù. ÀÌ¹Ì directplay¿¡µµ send,sendexµîÀÇ api°¡ Á¸Àç
 ÇÏÁÒ. ±×°É ¾²¸é µÇ´Â°Å´Ï±î¿ä.
 ±×·±µ¥..¼³¸í¼­¿¡ º¸´Ï±î setplayerdata°°Àº ÇÔ¼ö¸¦ ÇÇÇÏ´Â °ÍÀÌ ÁÁ´Ù°í ³ª¿ÍÀÖ½À´Ï
 ´Ù. ³×¶± 󸮸¦ ¾Ë¾Æ¼­ ÇÑ´ÙÁö¸¸, È¿À²¼º¿¡ ÀÚ½ÅÀÌ ¾ø¾î¼­ÀÎÁö 'Åë½Å·®ÀÌ ¹«Ã´ ¸¹
 À¸´Ï ÇÇÇ϶ó'¶ó´Â ½ÄÀ¸·Î Àû¾î³ù´õ±º¿ä.
 ±×¸®°í, °´Ã¼¸¦ dplay¿¡¼­ °ü¸®ÇÑ´Ù´Â °ÍÀº,world 2 world°°Àº ¼ÒÇÁÆ®¿þ¾î¿¡¼­ ¾²°í
  ÀÖ´Â ±â¼ú Áß ÇϳªÀε¥..Á¦°¡ º¸±â¿¡´Â directplay¿¡¼­ Áö¿øÇÏ´Â ¼öÁØÀº ±×¾ß¸»·Î
 "²Ê°ú±¤" ¹¹ ÀÌ·¸°Ô Ç¥ÇöÇÒ ¼ö ÀÖÀ»±î¿ä? :) ¾ÆÁÖ °£´ÜÇÑ °ÔÀÓÀÌ ¾Æ´Ï¶ó¸é, »ç½Ç À¯
 ¾ß¹«¾ßÁÒ. ±×·¡¼­, À̰ÍÀú°Í °í·ÁÇØ¼­ °ÔÀÓÀ» ¸¸µå½Å´Ù¸é, ±Ý¹æ setplayerdata°¡ ¼³
 °è °úÁ¤¿¡¼­ºÎÅÍ º°·Î ¾µµ¥¾ø´Â °ÍÀÓÀ» ¾Ë¼ö ÀÖÀ»°Ì´Ï´Ù.
 ÀÚü ¿£ÁøÀ̶ó.. ¸¸µå¼Åµµ ÁÁ½À´Ï´Ù. ±×·¸Áö¸¸,¾Õ¿¡¼­µµ ¾ð±ÞÇßµíÀÌ setplayerdata
 ¼öÁØÀÇ ¿£ÁøÀ» ¸¸µå½Ã´Â °Å¶ó¸é ¸»¸®°í ½Í±º¿ä. ±× Á¤µµ ¼öÁØÀ̶ó¸é, ¸¸µå´Â°Íµµ »ó
 ´çÈ÷ Â¥Áõ³ªÁö¸¸, ¸·»ó ¸¸µé¾îµµ ¿ª½Ã,º°·Î ¾µµ¥°¡ ¾øÀ»°Ì´Ï´Ù. :)
 Á÷Á¢ ³×¶± 󸮸¦ ¾ô¾î³õ´Â ±¸Á¶·Î ¸¸µå½Ã´Â°Ô °¡Àå ¸¸¸¸ÇÏ°í ÆíÇÒ°Ì´Ï´Ù.
 ±×¸®°í

,duel¼Ò½º¸¦ Àß ¶â¾îº¸¸é setplayerdataº¸´Ù ¸Þ½ÃÁö 󸮿¡ ÀÇÁ¸À» ¸¹ÀÌ Çϰí
 ÀÖ´Ù´Â°É ±Ý¹æ ¾Ë¼ö ÀÖÀ»ÅÙµ¥¿ä..
 Å±׸¦ Çϳª ºÙÀÌÀÚ¸é..ÀÌ»óÀº ÀúÀÇ °æÇè´ãÀ̾ú½À´Ï´Ù.
                                                        ¿¤¶õ  

IPX ÀåÄ¡¸¸ ¾ò´Â ¹æ¹ý..

Èì..
 À̰еµ¿ÍÁÖ°í ½ÍÁö¸¸..Àúµµ ¿ö³« Ãʺ¸¶ó.
 ÇÏÁö¸¸...´äº¯ÀÌ µÉ¼öµµÀÖÀ»°Í °°¾Æ..
 Èì..
 ¸ÕÀú
 DirectPlayEnumerate ¿¡ º¸³»´Â ÄݹéÇÔ¼ö°¡
 EnumConnectionsCallback ÀÌ ÇÔ¼ö°¡ ¸Â³ª¿ä..
 Èì..
 ÀÌÇÔ¼ö¿¡¼­ ipx¸¸ ¾ò¾î¿À·Á´Â °Ç°¡¿ä.. ÀÌ°Ô ¸Â´Ù¸é..
 Á¦ »ý°¢¿¡
 ¿¹Á¦ ¼Ò½ºÁß
 override
 EnumModemAddress
 ·Îºñ¸¦ »ç¿ëÇØ ¸ðµ© Á¤º¸¸¸ ¾ò¾î¿À´Â
 EnumModemAddress ÄݹéÇÔ¼ö°¡ ÀÖ´õ±º¿ä.
°Å±â¼­  ÀÎÀÚÁß REFGUID lpguidDataType
 °¡ ÀÖ´øµ¥.
 À̰É
 if (IsEqualGUID(lpguidDataType, &DPAID_Modem))
 ¸¦ »ç¿ëÇØ ¸¸¾à ¸ÂÀ¸¸é Á¤º¸¸¦ ¾ò¾î¿À´õ±º¿ä.
 À̰ɺ¸¸é
 EnumConnectionsCallback ÇÔ¼ö¿¡µµ
 LPCGUID lpguidSP
 ÀÌÀܰ¡ Àִµ¥
 ¿©±â¼­ ÄݹéÇÔ¼ö¿¡
 if (IsEqualGUID(lpguidSP, &DPSPGUID_IPX))
 ¸¦ »ç¿ëÇÏ¿© ÂüÀ̸é Ãß°¡ÇÏ°í ¾Æ´Ï¸é ±×³É ºüÁ®³ª°¡´Â
 ¹æ½ÄÀ¸·Î ......
 Èì...
 ÀÌ·¯¸é µÉ°Í °°±âµµ ÇÏÁö¸¸..
                ±¸º»¼ö perpet

Èì.
 dp¿¡¼­
 send·Î ¸Þ¼¼Áö¸¦ º¸³ÂÀ»¶§.
 ¸ÕÀú º¸³½¸Þ¼¼Áö°¡ ³ªÁß¿¡ º¸³½¸Þ¼¼Áöº¸´Ù
 ´Ê°Ô Àü´ÞµÉ¼öµµ ÀÖ³ª¿ä.
 ±×¸®°í °¡´ÉµµÁß ¼Õ½ÇµÇ°Å³ª ¼Õ»óµÉ¼öÀÖ³ª¿ä.
 Èì.
 ÀÌ·±°Í±îÁö °í·ÁÇÏ·Á´Ï À̰аñ¶§¸®´Â±º.
 ¾Æ..±×¸®°í
 º¸Åë ÀÌ·±°æ¿ì.
 ¾îÄÉ Ã³¸®¸¦ ÇØÁÖ¾î¾ßÇÏ´ÂÁö.
 ±×·³.

 °ñ¶§¸®Áö¸¸,´ç¿¬ÇÕ´Ï´Ù.
 ÇÏÁö¸¸,DPSEND_GUARANTEED?¸¦ ºÙÀÌ¸é ±×·¸Áö´Â ¾ÊÀ»°ÍÀÔ´Ï´Ù.
 ´ë½Å,¾öû ´À¸®°ÚÁÒ.

..±×·± °æ¿ì°¡ »ý°Üµµ ¾î´À Á¤µµ ¿ÏÃæÀÌ µÇ´Â °Íµé,¿¹¸¦ µé¸é Ç÷¹À̾îÀÇ À§Ä¡
 °°Àº °ÍµéÀÌ »ç¿ë ´ë»óÀÌÁÒ. Á¶±ÝÀÇ ¿ÀÂ÷µµ Çã¿ë¸øÇÏ´Â µ¥ÀÌÅÍ´Â
 DPSEND_GUARANTEED¸¦ ¾²´Â°Ô ÁÁÁÒ.
 Á»´õ Á¤È®È÷ ¸»ÇÏÀÚ¸é, guaranteed°¡ ¾Æ´Ñ ¼Û¼ö½ÅÀº UDPÇÁ·ÎÅäÄÝÀ» ¾¹´Ï´Ù.
 ±× ÇÁ·ÎÅäÄÝ ¼ºÁúÀÌ ¼ø¼­°¡ µÚ¹Ù²î°Å³ª,¾È°¡°Å³ª,µÎ°³ÀÌ»óÀÌ Áߺ¹µÇ¾î
 °¡´Â µîÀÇ ¿ÀÂ÷°¡ ÀÖ½À´Ï´Ù.  

DPChat ³ª ±×¹ÛÀÇ ´Ù¸¥ SampleÀ» º¸°Ô µÇ¸é...
 TCP/IP¸¦ ¼±ÅÃÇÏ°Ô µÇ¸é.. IP¸¦ ³ÖÀ¸¶ó´Â ¸Þ½ÃÁö ¹Ú½º°¡ ³ª¿É´Ï´Ù..
 ¿©±â¿¡¼­ ±× ¸Þ½ÃÁö ¹Ú½º¸¦ ¶ç¿ìÁö ¾Ê°í.. »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾øÀ»±î¿ä?
 ÀÚ½ÅÀÇ  IP¸¦ »ç¿ë Çϰųª ¾Æ´Ï¸é ´Ù¸¥ »ç¶÷ÀÇ ¾ÆÀÌÇǸ¦ »ç¿ëÇÒ ¼ö ÀÖ´Â
 ¹æ¹ýÀ» ¾Ë°í ½Í³×¿©..
 º°ÁþÀ» ´Ù ÇØ º¸¾Ò´Âµ¥..
 ¸Ç µÚ¿¡ ¿É¼Ç¿¡ ..._RETURN.. ¸¦ ³Ö¾î º¸¾Ò´Âµ¥µµ..
 ¸Þ½ÃÁö ¹Ú½º°¡ ¶ß°Ô µÇ´õ±º¿©.. ÂÁ..   

 Tutorial 3: Overriding the Service Provider Dialogs Ç׸ñÀ» directx help¿¡¼­
 Ã£¾Æº¸¼¼¿ä.
 °Å±â¿¡ ´äÀÌ ÀÖÀ»°Ì´Ï´Ù.   

dp´Â ¼Ò¼ö Ç÷¹À̸¸°¡´ÉÇÏ´Ù°í Çϴµ¥.
 ±×ÀÌÀ¯¸¦ ±×³É.
 ½ÇÇàÇØº¸´Ï ±×·¸´õ¶ó..¸¸ ³ª¿ÍÀÖ±º¿ä..
 ±×·¯´Ï±î.
 dp°¡ ¿Ö ³»ºÎÀûÀ¸·Î ¾îÄÉ ±¸¼ºµÇ¿© Àֱ⠶§¹®¿¡
 ±×·¸´õ¶ó´Â ¸»ÀÌ ¾ø¾î¿ä.
 Àü ±×°É ¾Ë°í½Í¾î¿ä...

directx6ºÎÅÍ´Â ºñµ¿±â 󸮸¦ Áö¿øÇÏ±â ‹š¹®¿¡, directx5ÀÌÀüÀÇ dp¿¡¼­
 °íÁúÀ̾ú´ø ºí·°Å· Çö»óÀ» ¹«¸¶ÇÒ ¼ö ÀÖÁÒ. ÀÌ·± ¹®Á¦°¡ ÀÖ¾ú°í¿ä..
 ¶Ç Çϳª´Â,µéÀº ¾ê±âÀÏ »Ó Á÷Á¢ ½ÇÇèÇØ º¸Áö´Â ¾Ê¾ÒÁö¸¸, dp°¡ 92¸í?
 Á¤µµÀÇ Àοø±îÁö¸¸ ó¸®ÇÒ ¼ö ÀÖ´Ù°í ÇÕ´Ï´Ù.

¾îÂ÷ÇÇ DPµµ ¼ÒÄÏ Ä¿³Ø¼ÇÀ» Ãß»óÈ­ ½ÃÄѳõÀº ·¹À̾î¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö¾ß
 ¾î¶»°Ô ¾²µç ³»ºÎÀûÀ¸·Î´Â Win32¼ÒÄϵ¿ÀÛÀ» ÇÑ´Ù´Â ¸»ÀÌÁÒ(ÀÚ¼¼È÷´Â ¸ð¸§)
 DP¿¡¼­ 92°³ Á¤µµÀÇ ¿¬°á¸¸ÀÌ °¡´ÉÇÏ´Ù´Â °ÍÀÌ °­·ÂÇÑ Áõ°ÅÀε¥ À̰ÍÀº win95ÀÇ
 ¼ÒÄÏ ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ Á¦°øÇÏ´Â ÃÖ´ë°¹¼öÀÇ ¼ÒĹ¼ö¿Í °ÅÀÇ ÀÏÄ¡ÇÏ´Â ¼öÄ¡°Åµç¿ä
 ±×·¯³ª WinNTÀÇ °æ¿ì´Â ¼ÒÄÏÀ» ÈξÀ ¸¹ÀÌ »ý¼ºÇÒ ¼ö ÀÖÀ¸¹Ç·Î º¸Åë ¼­¹ö¸¦ NT¿¡
 ¶ç¿ì°Ô µÇÁÒ. ¹®Á¦´Â ÇöÀç NT°¡ DirectX3.0ÀÌ»óÀ» Á¦´ë·Î Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î
 Å¬¶óÀÌ¾ðÆ®¸¦ 6.0Á¤µµ·Î ÀÛ¼ºÇÏ¿´À»¶§ DP°¡ °ú¿¬ Á¦´ë·Î µ¿ÀÛÇÒ °ÍÀÎÁö´Â
 ¸ð¸£°Ú´Ù´Â Á¡ÀÌÁÒ. Àúµµ Áö±Ý ¸Ó±×¸¦ ¸¸µé°í ÀÖÁö¸¸ ±×·¡¼­ Win32¼ÒÄÏÀ» ¾¹´Ï´Ù.
DP´Â ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® È¯°æº¸´Ù´Â ³ÝÇÿëÀ¸·Î ´õ ÀûÇÕÇÏ°Ô ¸¸µé¾î Áø °Í °°½À´Ï´Ù. 

 ¾È³çÇϼ¼¿ä.....
 ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ¿¡ °üÇØ¼­ Áú¹®ÇÒ °ÍÀÌ À־ ÀÌ·¸°Ô ±ÛÀ» ¿Ã¸³´Ï´Ù...
 Á¦°¡ ¿äÁò ´ÙÀÌ·ºÆ® Ç÷¹À̸¦ ÀÌ¿ëÇØ¼­ °ÔÀÓÀ» ¸¸µå´Âµ¥¿ä...(»ç½Ç °ÔÀÓÀº ¾Æ´Ï±¸
 ¿ä ±×³É ¿¹Á¦....^^;) ¸Þ¼¼Áö¸¦ ÁÖ°í ¹ÞÀ»¶§¿ä...´ë°Ô ¾²·¹µå·Î ÇÏÀݾƿä...
 ±×·¡¼­ ¿¬°áÀÌ µÇ¸é ¾²·¹µå¸¦ »ý¼ºÇؼ­ ¸Þ¼¼Áö¸¦ ÁÖ°í ¹Þ´Âµ¥¿ä...±×·¸°Ô Çϸé
 ÇÁ·¹ÀÓ¼ö°¡ 10¿¡¼­ 20Á¤µµ ¹Û¿¡ ¾È³ª¿É´Ï´Ù.....±×·¡¼­ Á¦°¡ ÇÑ ¹æ¹ýÀº¿ä....
 Çø³ÇÏ´Â ºÎºÐ ÀÖÀݾƿä..°è¼Ó Çø³À» ÇÏ´Â ºÎºÐ¿¡ ¸Þ¼¼Áö¸¦ ÁÖ°í ¹Þ´Â ÇÔ¼ö¸¦
 ³Ö¾î º¸¾Ò½À´Ï´Ù......±×·¯´Ï±î ÇÁ·¹ÀÓ¼ö´Â 30ÇÁ·¹ÀÓÁ¤µµ ³ª¿À´Âµ¥¿ä....

¹®Á¦´Â óÀ½¿¡´Â Àß µ¿ÀÛÇÏ´Ù°¡ ¸îºÐ¸¸ Áö³ª¸é À̰ÍÀÌ ¹ÝÀÀÀÌ ´Ê°Ô ¿À´Â°Ì´Ï´Ù...
 ±×·¯´Ï±î Á¦°¡ ÀÌÂÊ¿¡¼­ ½ºÇÁ¶óÀÌÆ®¸¦ ¿Å°å´Âµ¥ ¿·¿¡ ÄÄÇ»ÅÍ¿¡¼­´Â ÇÑÂü µÚ¿¡ À̵¿
 ÇÏ°Ô µÇ´õ±º¿ä...óÀ½ºÎÅÍ µ¿ÀÛÀ» Á¦´ë·Î ¾ÈÇÏ¸é ¸»À» ¾ÈÇϰڴµ¥¿ä....À̰Ô
 Ã·¿¡´Â µÇ´Ù°¡ ³ªÁß¿¡ ¸îºÐÀÌ Áö³ª¸é ±×·¸°Ô ´À·ÁÁö³×¿ä......
 ¸Þ¼¼Áö¸¦ È¿°úÀûÀ¸·Î ÁÖ°í ¹Þ´Â ¹æ¹ýÀº ¾øÀ»±î¿ä.....?
 °í¼ö´ÔµéÀÇ ´äº¯ ºÎʵ右´Ï´Ù......³¡±îÁö Àоî Áּż­ °¨»çÇÕ´Ï´Ù....

 P.S : ±Ùµ¥ ÀÌ»óÇÏ°Ô ³×Æ®¿öÅ© °Ô½ÃÆÇ¿¡ ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ¿¡ °üÇÑ ³»¿ëÀÌ º°·Î
 ¾ø³×¿ä.....¿äÁò ³×Æ®¿öÅ© °ÔÀÓÀº ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ·Î ¾È¸¸µå³ª¿ä....?...^^;     

 ¾È³çÇϼ¼¿ä...
À½...  ÇÁ·¹ÀÓ´ÜÀ§·Î Çѹø¾¿ µ¥ÀÌÅ͸¦ ó¸®ÇÏ½Å°Í °°Àºµ¥¿ä...
 ÇöÀçµé¾î¿Â µ¥ÀÌÅ͸¦ ¸ðµÎ ó¸®ÈÄ¿¡ ´ÙÀ½ÇÁ·¹ÀÓÀ¸·Î ³Ñ¾î°¡º¸¼¼¿ä...
 ±×·³..          

  DirectPlay ¸¦ ÀÌ¿ëÇØ¼­ ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» Â¥´Âµ¥¿ä
 Host ´Â Á¦´ë·Î µÇ´Âµ¥
 Join ÇÏ·Á°í ÇÒ¶§ EnumSession À¸·Î ¼¼¼ÇµéÁß ¾î´À¼¼¼ÇÀ¸·Î
 Á¶ÀÎÇÒÁö¸¦ °áÁ¤ÇؾߵǴµ¥
 ¹«Á¶°Ç ù¹øÂ° ¼¼¼ÇÀ¸·Î¸¸ Á¢¼ÓÇÏ·Á°í ÇÕ´Ï´Ù..
 °í¸£´Â ·çƾ ¾øÀÌ ¹Ù·ÎµÇµµ·ÏÀÌ¿ä..
 DPSESSIONSDESC2 SessionDesc ¿¡¼­

SessoinDesc.guidInstance ¿¡ µé¾î°¥°ª¸¸ ³Ö¾îÁÖ¸é µÉ°Í°°Àºµ¥..
¾î¶»°Ô ÇØ¾ßµÉÁö ¾Ë·ÁÁÖ¼¼¿ä.

// global º¯¼ö
 // global
 GUID guidSession;
 int  nIndex;
 //-------------------------------------------------------------------------
 // EnumSessions
 //-------------------------------------------------------------------------
 HRESULT EnumSessions()
 {
     HRESULT hr;
     DPSESSIONDESC2 sessionDesc;  

    nIndex = 0;
 
     // add sessions to
     ZeroMemory(&sessionDesc, sizeof(DPSESSIONDESC2));
     sessionDesc.dwSize = sizeof(DPSESSIONDESC2);
     sessionDesc.guidApplication = SNOWGAME_GUID;
 
     hr = m_pDP4A->EnumSessions(&sessionDesc, 0, EnumSessionsCallback,
                    NULL, DPENUMSESSIONS_AVAILABLE | DPENUMSESSIONS_ASYNC);
 
     return hr;
 
 }
 //-------------------------------------------------------------------------
 // callback ÇÔ¼ö   

//-------------------------------------------------------------------------
 BOOL FAR PASCAL EnumSessionsCallback(
                         LPCDPSESSIONDESC2   lpSessionDesc,
                         LPDWORD             lpdwTimeOut,
                         DWORD               dwFlags,
                         LPVOID              lpContext)
 {
     //
     if (dwFlags & DPESC_TIMEDOUT)
         return (FALSE);
 
     // store session guid
     guidSession = lpSessionDesc->guidInstance ;
 
     // session¼ö Áõ°¡
 ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡

    nIndex++;
 
     // Returns TRUE to continue the enumeration or FALSE to stop it.
     return TRUE;
 }
 
 À§¿Í °°ÀÌ sessionÀÇ guid¸¦ Àü¿ªÀ¸·Î Àâ¾ÆµÎ°í,
 Ä«¿îÅ͸¦ Àü¿ªÀ¸·Î µÓ´Ï´Ù.
 ±×¸®°í EnumSessions¸¦ È£ÃâÇÑ ÈÄ nIndex °¡ 0 º¸´Ù Å©´Ù¸é
 sessionÀ» ã¾Ò´Ù´Â °ÍÀ̹ǷΠ±×¶§ ¼­¾ß OpenÀ¸·Î joinÇÏ¸é µË´Ï´Ù.
 
 ¿©±â¼­ ÁÖÀÇÇÏ½Ç °Ç EnumSessionsÇÔ¼ö¸¦ ÇÑ ¹ø È£ÃâÇϸé sessionÀ» ¼º°øÀûÀ¸·Î
 Ã£´Â´Ù°í »ý°¢ÇÏ½Ã¸é ¾ÈµË´Ï´Ù.
 Àû¾îµµ µÎ¼¼¹ø È£ÃâÇØ¾ß ÇÏÁÒ.
 ±×·¡¼­ dpchat°°Àº »ùÇÿ¡¼± timer¸¦ ½á¼­ °è¼Ó ã½À´Ï´Ù.

 timer¸¦ ½á °è¼Ó ã´Ù°¡ ãÀ¸¸é ( nIndex°¡ 0º¸´Ù Å©°ÚÁÒ.)
 ±×·¯¸é timer Á×À̰í joinÇÏ¸é µË´Ï´Ù.

 ¾È³çÇϽʴϱî?
 ³×Æ®¿÷ °ÔÀÓ½ÇÇà½Ã Provider¸¦ ¼±ÅÃÇÏ´Â ´ÙÀ̾˷α׸¦ ³ªÅ¸³ªÁö ¾Ê°í
 ÀÓÀÇ·Î Ç×»ó TCP¸¦ ¼±ÅÃÇÏ·Á°í ÇÕ´Ï´Ù.
 À̰ÍÀ» À§ÇÏ¿© DirectPlayEnumerate()ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê°í ±×³É
 ÇÏ·Á°í Çϴµ¥ ¹æ¹ýÀ» Àß ¸ð¸£°Ú±º¿ä.
 ÇØ°á¹æ¹ýÀ» ¾Ë·ÁÁÖ½Ã¸é °¨»çÇϰÚÀ¾´Ï´Ù.  

óÀ½À¸·Î ¾²´Â ´äº¯À̳׿ä..^^
 ´ÙÀ̾˷α׿¡¼­ ¼±ÅÃÇÏÁö ¾Ê°í ¹Ù·ÎµÇ°Ô ÇϽǷÁ¸é¿©..
 DirectX SDK ÁßÀÇ OVERRIDE.C ¿¡¼­
 CreateServiceProviderAddress ÇÔ¼ö¸¦ Âü°íÇØº¸½Ã¸é
 µÉ°Ì´Ï´Ù..
 ±×·³..^^