TCP/IP¿Í UDP/IP¸¦ ÀÌ¿ëÇÏ¿© ¼ÒÄÏÇÁ·Î±×·¡¹ÖÀ» Çϰí ÀÖ½À´Ï´Ù.
server¿Í client¸¦ ¸¸µå´Â °Í±îÁö´Â ¼º°øÇÏ¿´½À´Ï´Ù.
ƯÈ÷ recv¸¦ »ç¿ëÇÒ ¶§¿¡´Â thread¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¡¹ÖÀ» Çß±¸¿ä.
¿©±â °í¼ö´ÔµéÀÇ Á¶¾ðÀÌ ¸¸µé¼ö ÀÖ´Â ¿øµ¿·ÂÀ̾ú½À´Ï´Ù.
±×¸®°í.. ¿°Ä¡ºÒ±¸ÇÏ°í ¶Ç ¹°¾îº¾´Ï´Ù.
recvÇÔ¼ö´Â ¼¹ö°¡ µ¥ÀÌŸ¸¦ ¾ÈÁÖ¸é ¹«ÇÑÁ¤ delay°¡ °É¸®´õ±º¿ä.
±×·¡¼ thread·Î ÇØ°áÀ» Çß½À´Ï´Ù.
±×·±µ¥ sendÇÔ¼öµµ delay°¡ ÀÖ½À´Ï±î?
°ÑÀ¸·Î º¸±â¿¡´Â delay°¡ ¾ø´Â °Íó·³ º¸ÀÌ´øµ¥...
Ȥ½Ã ¾Æ½Ã´Â ºÐ °è½Å°¡¿ä?
±×¸®°í À̰÷ °Ô½ÃÆÇÀ» °è¼Ó º¸°í Àִµ¥, nonblocking¸ðµå¸¦ »ç¿ëÇÏ´Â°Ô ÁÁ´Ù°í
ÇÏ´õ±º¿ä.
À½... Àü socket, listen, accept¿Í connectÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿¬°áÇÑ ÈÄ¿¡
send¿Í recvÇÔ¼ö·Î Åë½ÅÀ» Çϴµ¥... ¾î´À ºÎºÐ¿¡¼ nonblocking¸ðµå¿Í blocking
¸ðµå¸¦ ¼ÂÆÃÇØ ÁÖ¾î¾ß Çϳª¿ä?
µµ¿ò ÁÖ¼ÌÀ¸¸é °¨»çÇϰڽÀ´Ï´Ù.
À¸À¸~ °í¼öÀÇ ±×³¯±îÁö...
±×·³ °í¸¿½À´Ï´Ù.
¿ì¼± ¼ÒÄÏÀÇ »óÅ¿¡ µû¶ó °¢ ÇÔ¼öµéÀÌ delay°¡ µÉ ¼öµµ
ºí·¯Å·ÀÌ °É¸± ¼öµµ ÀÖ½À´Ï´Ù.
blocking mode, nonblocking mode, asynchronous mode3°¡Áö
°¡ Àִµ¥ ±×Áß ¾î¶² °ÍÀ» ½è´À³Ä¿¡ µû¶ó ´Þ¶ó Áö°ÚÁÒ.
º¸Åë ÇÁ·Î±×·¥ÀÇ Á¾·ù¿¡ µû¶ó À¯¸®ÇÑ Á¶°ÇÀÇ ¼ÒÄÏÀÌ ÀÖ°ÚÁö¿ä.
Á¦ °æÇèÀ¸·Î´Â asynchronous mode°¡ °¡Àå ÁÁ¾Ò´ø °Í °°½À´Ï´Ù.
¿©·¯ Ŭ¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÏ´Â ¼¹ö¿¡¼´Â ƯÈ÷³ª..
¿Ö³Ä¸é, ÇÑ Å¬¶óÀ̾ðÆ®ÇÑÅ× ¼¹ö°¡ ÀâÇô ÀÖÀ¸¸é ¾ÈµÇ´Ï±ñ¿ä.
connect°°Àº °æ¿ì´Â ¾îÂ÷ÇÇ ÀÌ ÇÔ¼ö°¡ ¼öÇàÀÌ µÇ¾î¾ß ´Ù¸¥ ÀϵéÀ»
ÇÒ ¼ö ÀÖÀ» Å×´Ï ºí·¯Å·ÀÌ µÇµµ »ó°ü ¾øÀ» °Í °°³×¿ä(¿¬°á ¾ÈµÇ´Â °æ¿ì¸¦
´ëºñÇØ¼ 30ÃÊ ÀÌ»ó ºí·¯Å·ÀÌ µÇ´Â °Ç ¸·¾Æ¾ß °ÚÁÒ? ¾Æ´Ï¸é ÄÄÇ»ÅÍ ÀçºÎÆÃ
ÇØ¾ß Çϴϱñ)´ëÃæ ±â¾ïÀ» ´õµëÀ¸¸ç ¸» ¾¸ µå·È´Âµ¥, µµ¿òÀÌ µÆ³ª ¸ð¸£°Ú³×¿ä
±×·³ À̸¸....
tcp¿¡¼ send°¡ ¼º°øÀûÀ¸·Î ¿Ï·áµÇ¾ú´Ù´Â ¸»Àº ³»ºÎÀûÀ¸·Î
¼ö½ÅÃø°úÀÇ ÆÐŶ±³È¯ÀÌ ¿ÏÀüÈ÷ ³¡³µ´Ù´Â°Å°ÚÁÒ.
¼ö½ÅÃøÀ¸·ÎºÎÅÍ ¼º°øÀûÀ¸·Î ¹Þ¾Ò´Ù´Â ¸Þ½ÃÁö¸¦ ¹Þ±â Àü±îÁø
send°¡ ¿Ï·áµÈ°Ô ¾Æ´ÏÁÒ.
µû¶ó¼ ºí·°Å· ¸ðµå¿¡¼± sendµµ µô·¹ÀÌ µÉ¼ö ÀÖ½À´Ï´Ù.(¶ó°í »ý°¢.
¾ðÁ¦³ª lanȯ°æ¿¡¼¸¸ Å×½ºÆ® ÇØºÁ¼ µô·¹ÀÌ µÇ´Â°Ç º¸Áú ¸øÇßÁö¸¸)
·Î±äÇÒ¶§´Â ½º·¹µå¸¦ ½áµµ »ó°ü¾ø°ÚÁö¸¸ send¿Í recv¸¦ ÇÒ¶§´Â ºñµ¿
±â ¸ðµå¸¦ »ç¿ëÇÏ´Â°Ô ÁÁ´Ù´Â »ý°¢ÀÔ´Ï´Ù.Ŭ¶óÀÌ¾ðÆ®´Â ±×·¡µµ ¹®Á¦°¡
´úÇѵ¥ ¼¹ö¿¡¼ ¸ðµç ÄÁ³Ø¼Ç¿¡ ´ëÇØ recv,send¸¦ ½º·¹µå·Î µ¹¸°´Ù¸é
±× ºÎÇϰ¡ ¾öû³ª°ÚÁÒ.
¿µÃµ´ÔÀÌ À߸ø ¾Ë°í°è½Åµí Çϳ׿ä.
send´Â ¼ö½ÅÃø°ú °ü°è¾øÀÌ ³×Æ®¿÷»ó¿¡ ÆÐŶÀ» »Ñ¸®´Â°Í¸¸À¸·Î ¿Ï·áµË´Ï´Ù.
¼ö½ÅÃøÀÌ ¸Þ¼¼Áö¸¦ ¸ðµÎ ¹ÞÁö ¸øÇصµ sendÇÔ¼ö´Â ¸®ÅϵÇÁÒ.
ºí·¯Å·¸ðµå¿¡¼ send°¡ µô·¹ÀÌ µÇ´Â »óȲÀÌ ÀÖ±ä ÇÏÁö¸¸
¼ö½ÅÃøÀÇ ¼ö½Å¿©ºÎ¿Í´Â °ü°è°¡ ¾ø½À´Ï´Ù.
ÀÎÅÍ³Ý »ó¿¡¼ Å×½ºÆ®Çغ¸½Ã¸é µÉ°Ì´Ï´Ù.
°æÇèÇѹٷδ ´ë°Ô sendÀÇ ºí·¯Å·Àº ´ë·®ÀÇ µ¥ÀÌÅ͸¦ ªÀº ½Ã°£¿¡
³¯¸±¶§ ÀϾ°ï ÇÏ´õ±º¿ä.
¼ÒÄÏ·¹À̾îÀÇ ¹öÆÛ°¡ °¡µæÂ÷¼ ±×·±°Ô ¾Æ´Ò±î.. »ý°¢ÇÕ´Ï´Ù¸¸, Á¤È®ÇѰÇ
¸ð¸£°Ú³×¿ä.
±×¸®±¸.. ¼ÒÄÏ ¾²½Ã·Á¸é non-blocking º¸´Ù´Â blocking ¾²½Ã±æ ±ÇÇÕ´Ï´Ù.
non-blocking ¼ÒÄÏÀ» ¾²¸é send½ÃÀÇ ¿¡·¯Ã³¸®¸¦ º¸¾Æ¾ß Çϴµ¥..
ÀÌ°Ô WOULDBLOCK Àϰæ¿ì send´Â ½ÇÆÐÇÑ°Ô µË´Ï´Ù. (winsockÀÇ °æ¿ì)
¿©±â¿¡ µû¸¥ 󸮰¡.. ¸»µµ¾ÈµÇ°Ô º¹Àâ(blocking¿¡ ºñÇØ¼)ÇÏÁÒ.
½º·¹µå¸¦ ¾²´ø°¡, I/O MultiplexingÀ» ¾²´ø°¡ ÇØ¼ blocking¼ÒÄÏÀ» ¾²´Â°Ô
³ªÁß¿¡ µð¹ö±ëÇϱ⵵ ½±±¸¿ä..
- Testors
ps. e·Î Ãß°¡ÇÕ´Ï´Ù.
Á¦°¡ º¸±â¿£ TCP ¿¡¼ send Çϸé ÇØ´ç ÇÁ·¹ÀÓÀÇ ÆÐŶÀ» ¹Þ¾Ò´Ù´Â ACK°¡
µ¹¾Æ¿Í¾ß Çϴµ¥ ÀÌ°Ô ¿ÀÁö ¾ÊÀ»°æ¿ì.. ¹°·Ð À̰æ¿ì send´Â ºí·°µÇÁö
¾Ê½À´Ï´Ù. ÀÌ·¸°Ô µÇ¸é µ¥ÀÌÅʹ õ»ó sendÇÑÃøÀÇ ¹öÆÛ¿¡ ½×ÀÌ°Ô µÇ´Âµ¥¿ä
À̶§ ½×ÀÌ´Ù°¡ °è¼ÓÀûÀÎ send¿äûÀ¸·Î ¹öÆÛ°¡ °¡µæÂ÷°Ô µÇ¸é ±×ÈÄ send¿¡¼
ºí·°µÇ´Âµí ÇÕ´Ï´Ù.
send delay´Â ºí·¯Å·ÀÎ °æ¿ì system buffer°¡ ²ËÂù°æ¿ì¿¡
´õÀÌ»ó ¾µ¼ö ¾øÀ½À¸·Î ºô¶§±îÁö ±â´Ù¸±¶§ ÀÏ¾î ³ª´Â °ÍÀ̰í
nonblocking ȤÀº asynchronous modeÀÎ °æ¿ì¿¡´Â Àý´ë·Î
delay°¡ ÀϾÁö ¾Ê°í, ´ÜÁö º¸³»±â¿¡ ¼º°øÇÑ byte¼ö¸¸Å¸¸
returnÇÏ°Ô µË´Ï´Ù.
µû¶ó¼, nonblocking°ú asynchronous modeÀÎ °æ¿ì¿¡ ¿ÏÀüÇϰÔ
send¸¦ ¿Ï·á Çϱâ À§Çؼ´Â ±× returnµÈ °ªÀ» Ç×»ó È®ÀÎÇÏ¿©
´Ù½Ã ±× ´ÙÀ½ byteºÎÅÍ sendÇÏ¿©¾ß ÇÕ´Ï´Ù.
ÀÌ ºÎºÐÀÌ Á» º¹ÀâÇÏÁÒ..
Ȥ½Ã À߸øµÈ ºÎºÐÀÌ ÀÖ´Ù¸é °í¼ö´ÔµéÀÇ Á¶¾ð ºÎŹ µå¸³´Ï´Ù.
Á¦°¡ Ã¥¿¡¼ ºÃ´ø ³»¿ë À̴ϱñ ¸ÂÀ» ²¨¿¡¿ä. ±â¾ïÀ» ´õµë¾î
¾´ °ÍÀÌÁö¸¸¿ä...
±×·³ À̸¸.....
jadoo
API¼ÒÄÏ¿¡¼, bindºÎºÐ¿¡¼ ÀÚ²Ù¸¸ 1038¹ø¿¡·¯(WSAENOTSOCK)°¡ ³ª³×¿ä..
ÇØ°áÃ¥Á»..
´ë° ¾î¶²¸»ÀÎÁö´Â ¾Ë°Ù´Âµ¥..
ÇØ´ç ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇØ ÁöÁ¤µÈ ¼ÒÄÏ ±â¼úÀÚ°¡ À¯È¿ÇÏÁö ¾ÊÀ½,
À̶ó´Â ¸»Àε¥, ¶æÀ» ¸ð¸£°Ù³×¿ä.
ÇØ°áÃ¥À»
±×·³
.
¿äÁò Ã¥Á» Àаí Àִµ¥¿ä.
RS-232-c¶ó´Â ³»¿ëÀÌ ¸¹À̳ª¿À´Â±º¿ä.
óÀ½¿¡´Â ÇÁ¸°Æ®Æ÷Æ®¸¦ ¸»Çϳª..
¾Æ´Ï..¾ß..¸¶¿ì½ºÆ÷Æ®Àΰ¡??
À½...±×°Íµµ¾Æ´Ï°í Èì.
È®Àå½½·ÔÀΰ¡.
ÈÇ.
Áö±ÝÀº °ÅÀÇ ¾È¾²°í ÀÖ´Â.
ÇÉ9°³Â¥¸® ÇÁ¸°Æ®Æ÷Æ®±Ùó¿¡ÀÖ´Â Æ÷Æ®·Î
»ý°¢Çϰí Àִµ¥.
ÈÇ.ÀÚ¼¼È÷ ¾Æ½Ã´ÂºÐ ´äº¯Á».
±×·³.
¸ÕÀú.. ¼ÒÄÏ ¿¡·¯´Â....
Á¦ »ý°¢¿¡ ¼ÒÄÏ µð½ºÅ©¸³ÅÍ·Î ¸¸¾à m_SockÀ» ¼±¾ðÇß´Ù¸é.
bindÀü¿¡ ¹Ýµå½Ã ¼ÒÄÏ »ý¼ºÀ» ÇØ Áà¾ß ÇÕ´Ï´Ù.
m_SockÀº ¸» ±×´ë·Î ¼ÒÄÏ µð½ºÅ©¸³Å͸¦ ÀúÀåÇÒ º¯¼öÀÏ µû¸§ÀÌÁÒ.
µð½ºÅ©¸³ÅÍ »ý¼ºÀº ¹¹, WSASocket()À» ¾²´ø°¡..
socket()À» ¾²´ø°¡..(¸Â³ª?) ÇÏ½É µË´Ï´Ù.
±× ´ÙÀ½¿¡ bind()ÇÏ½É µÇ°ÚÁÒ.
±×·±µ¥, ÀÌ °É ¾È ÇϼÌÀ»¸®°¡... ¤Ì.¤Ì
´Ù¸¥ ºÎºÐµµ È®ÀÎÇØ º¸½Ã±æ..
±Ùµ¥, ±× ¿¡·¯´Â À̰Š¹Û¿¡ ¾ø´Â °Å °°Àºµ¥. ÂÁ..
µÎ¹øÀç·Î, RS-232C´Â ½Ã¸®¾ó Æ÷Æ®¿¡ ´ëÇÑ Ç¥ÁØ ±Ô¾àÀÔ´Ï´Ù.
¹¹ À̰ſ¡ ´ëÇÑ ³»¿ëÀÌ ¸¹ÀÌ Áß¿äÇÏÁö´Â ¾ÊÀ¸¸®¶ó°í »ý°¢µË´Ï´Ù.
¿äÁò ½Ã¸®¾ó Æ÷Æ®ÀÇ Á߿伺ÀÌ ¶³¾îÁö´Â Ãß¼¼¶ó..
USB·Î ¸¹ÀÌ ¿Å°ÜÁ® °¡´Ï±î¿©..
±×·³.
½Ã¸®¾ó ÇÁ·ÎÅäÄÝ ±Ô¾àÀ̶ó..
ÀÌ°Ç ÀÌÇØÇϰڴµ¥.
±¸Ã¼ÀûÀ¸·Î ¹«¾ùµéÀ» ¸»ÇÏ´ÂÁö¿ä.
±×·¯´Ï±î.
º»Ã¼µÚ¿¡ ¹»¸»Çϴ°ÇÁö¿ä.
^^
¹°¸®ÀûÀÎ ºÎºÐÀ» ¼³¸íÁ» ÇØÁÖ¼¼¿ä..
Á˼Û.
±×·³..
Á¦°¡ socket()¸¦ »ç¿ëÇÒ¶§,
if(Server_Socket=socket(....)==IV..._ERROR).....
ÀÌ·±½ÄÀ¸·Î Çß¾úÁÒ..
±×·¡¼, ±ÛÀ» ÀÐÀÚ¸¶ÀÚ È®ÀÎÇØº¸±¸,, ÀÌ»óÇÏ´Ù ½Í¾î¼,
±â³É ¹ÛÀ¸·Î »©º¸¾ÒÁÒ..
Server_Socket=socket(...);
if(Server_Socket==IV.._ERROR)...
ÀÌ·¯´Ï±î µÇ´õ±º¿ä..
±Ùµ¥ ¾Æ¸¶µµ, if¹®¾µ¶§,
if((Server_Socket=socket(...))==IV..._ERROR)...
ÀÌ·±½ÄÀ¸·Î ÇØµµ µÇ³ª???
À½..
À½..
³×Æ®¿÷ ÇùÖÀ» API ¼ÒÄÏÀ¸·Î ÇùÖÇϼ̳ª¿ä?
Á¦°¡ API¼ÒÄÏÀ¸·Î ¸¸µé¾úÀ»¶§ ¹æ¹ýÀ» ¾Ë·Áµå¸®ÁÒ..
¿¬°áÀÌ ÇØÁ¦µÇ¾úÀ¸¸é, Àд µµÁß¿¡ ¿¡·¯°¡ ¹ß»ýÇÒÅÙµ¥¿ä..
error=recv(...);
À̶§ error¿¡ ÁÖ·Î, ÀÐÈù ¹ÙÀÌÆ®°¡ ¸®ÅϵǴµ¥,
°¡²û°¡´Ù°¡ SOCKET_ERRORÀÌ ¸®ÅϵǴ °æ¿ì°¡ Àְŵç¿ä..
±×¶§, ¸¶Áö¸· ¿¡·¯¸¦ Ã¼Å©ÇØ¼,
Ŭ¶óÀ̾ðÆ®ÂÊÀº 10054¹ø¿¡·¯(¶æÀÌ ¹¹¿´´õ¶ó --;)
¼¹ö(Ŭ¶óÀ̾ðÆ®ÇϳªÇϳª¸¦ »ó´ë·Î ÀÖ´Â ¼ÒÄϵé)¿¡¼µµ ¿ª½Ã
10054¹ø ¿¡·¯°¡ ³ª´õ¶ó±¸¿ä..
À½..
±×·³,, Âü°í°¡ µÇ±æ..
¾È³çÇϼ¼¿ä ÀÌÈ«±âÀÔ´Ï´Ù.
¼¹ö¿¡ ¼ÒÄÏ Á¢¼ÓÇÑ Å¬¶óÀÌ¾ðÆ®°¡ Á×¾ú´Âµ¥ netstat·Î »ìÆìº¸¸é
ESTABLISHED»óÅÂÀÌ°í °è¼Ó »ì¾ÆÀÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
·£È¯°æ¿¡¼ Å×½ºÆ®Çغ¸´Â ¹æ¹ýÀº, Á¢¼ÓÇÑ »óÅ¿¡¼ Ŭ¶óÀ̾ðÆ®ÀÇ
ÄÄÇ»ÅÍ¿¡ ¿¬°áµÈ ³×Æ®¿÷ ÄÉÀ̺íÀ» »Ì¾Æº¸½Ã¸é µË´Ï´Ù. :)
ÀÌ·²¶©.. socketÂÊ¿£ ¿¡·¯°¡ ¾È³ª´õ±º¿ä. ¹°·Ð Á¦°¡ À߸ø ¾Ë¼öµµ
ÀÖÁö¸¸., ¿¡·¯Ã¼Å©°¡ Àß ¾ÈµÇ´õ±º¿ä.
ÀÌ·²¶§¸¦ ´ëºñÇØ¼.., ÀÏÁ¤½Ã°£ ÆÐŶÀÌ ¿ÀÁö ¾ÊÀ¸¸é °Á¦·Î
socketÀ» close½ÃÄÑÁÖ´Â ¹æ¹ýÀÌ ¶°¿À¸£´õ±º¿ä.
Àâ´ã¼º ±ÛÀÔ´Ï´Ù.
ºñÁ¤»óÀûÀΠŬ¶óÀÌ¾ðÆ® Á¾·á½Ã..
¿¹¸¦µé¸é ¼±À» »Ì´Â´Ù´ø°¡ Çϴ°æ¿ì¿¡´Â
±× ¼ÒÄÏ¿¡ write ÇßÀ»¶§ write ´ç½Ã´Â ¹®Á¦°¡ ¾ø´Â°Íó·³ ³ª¿ÀÁö¸¸
timeout µÉ¶§±îÁö TCP ·¹À̾¼ ¹Þ¾Æ¾ßÇÒ ÀÀ´ä(ACK)ÀÌ ¿ÀÁö¾ÊÀ»°æ¿ì
¾Ë¾Æ¼ ¼ÒÄÏÀ» Á׿©ÁÝ´Ï´Ù..
Async ¿¡¼´Â FD_CLOSE °¡ ³¯¾Æ¿À´õ±º¿ä.
read ¿¡¼ ¹Ýȯ°ª °Ë»ç·Îµµ ¾Ë¼ö ÀÖÀ»µí ÇÕ´Ï´Ù.
- Testors
°¡·É IP 100.100.100.0 ~ 100.100.100.255±îÁö ÄÁ³ØÆ®¸¦
½ÃµµÇÑÈÄ ¼º°øÇÏ´Â IP¸¦ Ãß·Á³¾·Á°í ÇÕ´Ï´Ù
±Ùµ¥ connect¿¡¼ ¼¹ö°¡ ¾ø´Â IP¿¡½ÃµµÇÏ·ÁÇϴϱî ÀÏÁ¤½Ã°£ÀÇ
ºí·ÏÅ·ÀÌ °É¸®´õ±º´¢
ºí·Ï½Ã°£ÀÌ ÂªÀ¸¸é »ó°ü¾ø´Âµ¥ ¾î¶² IP´Â 40ÃÊÀÌ»ó °É¸®´õ±º´¢
´õ ª°Ô TimeoutÀ» ¼³Á¤ÇÒ·Á¸é ¾î¶»°Ô ÇÏ¸é µÇÁÒ?
°£´ÜÇÑ ¿¹·Î º¸¿©ÁÖ½Ã¸é °¨»ç
±×·³
ÀÏÁ¤ ÁÖ¼Ò¿µ¿ª¿¡¼ ¼¹ö¸¦ scanÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ¶§´Â º¸Åë UDP·Î Çϴ°Ô
¸¹½À´Ï´Ù. TCPÀÇ connect´Â º°·Î ÀûÀýÇÑ ¹æ¹ýÀÌ ¸øµË´Ï´Ù.
UDP·Î ¿øÇϴ ȣ½ºÆ®µé¿¡ ÆÐŶÀ» ³¯·Áº¸°í ÀÀ´äµÈ ÆÐŶÀ» Àо¸é IP¸¦
¾Ë¾Æ³¾ ¼ö ÀÖÁö¿ä.
UDP´Â TCP¿Í´Â ´Þ¸® ¹«ÀÚ°Ô °£´ÜÇϴϱî.. ¸¸µå½Ã±â ½¬¿ï°Ì´Ï´Ù.
¿©Æ° UDP·Î ¼ºñ½º °Ë»öÇÏ°í °¡´ÉÇÑ ¼¹ö¸®½ºÆ®¸¦ ¸¸µçµÚ ConnectÇÏ¸é µÇ°ÚÁÒ..
½ÇÁ¦ÀÇ connect´Â TCP·Î »ç¿ëÇϴµ¥ connect¸¦ À§ÇÑ UDP¸¦ µ¿½Ã¿¡
¿î¿µÇ϶ó´Â ¸»¾¸Àΰ¡¿ä?
±×·¯¸é TCP/UDPµ¿½Ã¿¡ »ç¿ë ?
À½.. ±è¿µÈ£´Ô ¸»¾¸ÀÌ °¡Àå È¿À²ÀûÀÎ ¹æ¹ýÀÌ µÉ °Å °°½À´Ï´Ù.
ºñ·Ï µÎ¹øÀÇ connect ¿äû°ú socket È£ÃâÀÌ ÀÌ·ç¾îÁöÁö¸¸..
UPD´Â ÇǾî(peer)¿Í ¿¬°áÀÌ ÀÌ·ç¾îÁö´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î, connect¿¡
µû¸¥ µô·¹À̰¡ ¾øÀ»Å×´Ï..
ÀÏ´Ü udp ¼ÒÄÏÀ¸·Î ¸Þ½ÃÁö¸¦ ¹üÀ§ÀÇ ip¿¡ »Ñ¸®½Ã±¸..
ÀÏÁ¤ ½Ã°£µ¿¾È ÀÀ´äÀÌ ¿À´Â °æ¿ìÀÇ ip¸¦ ±¸Çؼ °®°í ÀÖ´Ù°¡
tcp ¼ÒÄÏÀ¸·Î ¿¬°áÇÏ½É µÇ°Ú½À´Ï´Ù...
Ȥ½Ã visual c++¿¡¼ mfc³ª ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¹Ù·Î
¼ºê³Ý¸¶½ºÅ¬¸¦ ¾Ë¼ö ¾øÀ»±î¿ä....
·¹Áö½ºÅ͸®¸¦ °ÇµéÁö ¾Ê°í...
ip´Â ¼ÒÄÏ¿¡¼ ¾Ë¼ö Àִµ¥....
¼ºê³Ý ¸¶½ºÅ©¸¸ ¾ø´õ±º¿ä....
Ȥ½Ã ¾Æ½Ã´Â ºÐÀÌ °è½Ã¸é ²À ¾Ë·ÁÁÖ¼¼¿ä....
Á¦¹ß ºÎʵ叱°Ô¿ë......
³×Æ®¿÷ Ãʺ¸ Áú¹®µå¸³´Ï´Ù.
ÁÖ·Î tcp·Î °³¹ßÇϽôµ¥ Àú´Â ¼Óµµ ¶«½Ã udp¸¦ ¼±ÅÃÇߴµ¥¿ä.
¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°£ÀÇ ÇÁ·¹ÀÓ ¼Óµµ°¡ ´Ù¸£¸é µô·¹ÀÌ µÇ¼
ÆÐŶÀÌ µµÂøÇϴµ¥¿ä.
°£´ÜÈ÷ pollingÀ» »ç¿ëÇߴµ¥ Àß ¾ÈµÅ³×¿ä.
udp¿¡¼´Â º¹ÀâÇÏ°Ô thread¸¦ ¾È ½áµµ µÉ °Í°°Àºµ¥..
ping À» °è»êÇØ¼ ±âÁØ ½Ã°£ ¾È¿¡ º¸³½ ÆÐŶÀ» °è¼Ó
Àд °Íµµ »ý°¢Çغôµ¥ ¿ØÁö ¹Ì´þÁö°¡ ¾È³×¿ä.
±×·³...
½Ã½ºÅÛ ÇöÀç TCP/IP°¡ µÑÀÌ»óÀ̸é socketÀÌ TCP ¶Ç´À UDP ¸ðµÎ ¾î¶² TCP/IP¿¡
Á¢¼ÓÀ» ½ÃµµÇÏ´ÂÁö? ÀÓÀǷΠƯÁ¤TCP/IP¸¦ ÁöÁ¤Çϰųª ¿ì¼±±ÇÀ» ÁöÁ¤ÇÒ ¼ö
ÀÖ´ÂÁö
¼ÒÄÏÀÇ °æ¿ì, listen ¼ÒÄÏ ¹ÙÀεù ÇÒ¶§,
ADDR_ANY ¸¦ IP¿¡ ³Ö¾îÁÖ´Â °æ¿ì°¡ ¸¹Àºµ¥..
¿øÇϴ ƯÁ¤ IP¸¦ ³Ö¾îÁֽøé ÇØ´ç IP¿¡ ÀϾ´Â ¼ÒÄÏ
À̺¥Æ®¸¸ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×·¯½Ã¸é µÇ´Â°Å ¾Æ´Ñ°¡¿ä?
^^
À½. Áú¹® ÇØÁֽаÍÀº ÀÌ¹Ì ÃÖÀÎÈ£´ÔÀÌ ´äº¯ÇØ ÁÖ¼ÌÀ¸´Ï ³Ñ¾î°¡°í..
µÎ TCP/IP ±×·¯´Ï±î µÎ°³ÀÇ ³×¶± ¸ÁÀ» ¾²°í µÎ°³ÀÇ IP ¸¦ °¡Á³´Ù°í
¿¹»óÇϴµ¥. Æ®·¡ÇÈ ·Îµå ¹ë·±½Ì¿¡ ´ëÇØ ¸»¾¸µå¸®°Ú½À´Ï´Ù. Áú¹®¿¡ ´ëÇØ
º°·Î ¹þ¾î³ª´Â ±Ûµµ ¾Æ´Ò¼ö ÀÖ°Ú±º¿ä.
NT ¿¡µµ ¸¶Âù°¡Áö°ÚÁö¸¸ Linux ±âÁØÀ¸·Î ¸»¾¸µå¸®ÀÚ¸é..
¿ì¼± µÎ°³ÀÇ IP °¡ ÇÒ´çµÇ ÀÖ°ÚÁö¿ä?
±×¸®°í ¾î¶² Æ÷Æ®¿¡ ¼ºñ½º¸¦ ÇÏ°Ô µÉÅÙµ¥. Remote ¿¡¼ ±×³É ÁÖ¼Ò¸¸ ´Ù¸£°Ô
±×¸®°í Æ÷Æ®´Â °°°Ô Á¢¼ÓÇϸé RX (¹Þ´Â) ÆÐŶÀº ÇØ´ç IP ´ë·Î µé¾î¿É´Ï´Ù.
ÇÏÁö¸¸ TX (º¸³»´Â) ÆÐŶÀÌ ¹®Á¦ÁÒ.
RX/TX ÆÐŶÀ» ÀûÀýÈ÷ ³ª´µ¾î Áִ°ÍÀ» load-balancing À̶ó°í Çϴµ¥, RX ÀÇ
°æ¿ì¿¡´Â »ç¿ëÀÚ°¡ ¾Ë¾Æ¼ µé¾î¿À°Å³ª ȤÀº ¸ÁÂÊ¿¡¼ static-routing À» °É¾î
·Îµå ¹ë·±½Ì ÇÒ ¼ö ÀÖ½À´Ï´Ù.
TX ÆÐŶÀº OS ³ª ¼ÒÇÁÆ®¿þ¾î Â÷¿øÀ¸·Î (Çϵå¿þ¾îÀûÀ¸·Î´Â °¡´ÉÇÒÁö ¸ð¸£°Ú
½À´Ï´Ù¸¸. Á» ºñ½Î°ÚÁÒ ¾Æ¸¶-__-?) ÇØ°áÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
À½. ÀúÈñ ¼¹ö´Â ³ë°¡´Ù·Î static-routing Å×À̺íÀ» ±¸¼ºÇؼ ·Îµå¹ë·±½Ì
Çß½À´Ï´Ù. ´«À¸·Î Á÷Á¢ º¸¸é¼ ·Îµå¹ë·±½ÌÀ» ²Ï³ª ¸¾´ë·Î ÇÒ ¼ö ÀÖÁö¸¸..
³ë°¡´Ù°¡ Á» ½ÉÇÏÁÒ. :)
¾îÂ¥ÇÇ ±¹³» ¼ºñ½º¸¦ ½ÃÀÛÀ¸·Î ÇÏ½Ç °Å¸é IP ºí·°ÀÌ ±×·¸°Ô ¸¹Áö ¾ÊÀ¸´Ï
(ISP ¸¶´Ù µû·Î ±¸¼ºÇØÁÖ¾î¾ß ÇÏ´Â ºÒÇàÇÔÀÌ ÀÖÁö¸¸)
static-routing Å×À̺íÀ» ±¸¼ºÇØ ·Îµå ¹ë·±½ÌÇÏ´Â °Íµµ ±×´ÙÁö ³ª»Û°Í
°°Áöµµ ¾Ê½À´Ï´Ù.
±×·³.
-ºñ¿±
TCP/IP ÇÁ·ÎÅäÄÝÀÌ µÎ°³ ÀÌ»ó À̶ó¸é
´ç¿¬È÷ ÁÖ¼Òµµ µÎ°³ ÀÌ»óÀÌ µË´Ï´Ù.
NIC ´ç ÃÖ¼Ò ÇѰ³ÀÇ IP¸¦ ÁöÁ¤ÇØ ÁÖ°Ô µÇÁö¿ä.
ÀÌ·¸°Ô µÇ¸é ¾î´ÀÂÊÀÌ Á¢¼ÓÀ» ¹Þ°ÔµÇ´Â°¡.. ´Â ¾ÆÁÖ °£´ÜÇÏÁö¿ä.
IP°¡ ´Ù¸£´Ï±î¿ä~!
Ŭ¶óÀÌ¾ðÆ®°¡ ¾î´À IP¸¦ Àû¾îÁÖ´À³Ä¿¡ µû¶ó¿¡ ´Þ·ÈÁö¿ä..
- Testors
¼ÒÄÏÇÁ·Î±×·¡¹ÖÀ¸·Î... ÆÄÀÏ ´Ù¿î·ÎµåµÇ´Â ÇÁ·Î±×·¥À» ¸¸µé·Á±¸ Çϴµ¥¿ä...
À½... ÀÌ·± ÇÁ·Î±×·¥ ¼Ò½º°¡ ¾îµð ÀÖÀ»°Å¶ó±¸ »ý°¢Çϰŵ翩...
¼Ò½º½º°¡ ¾îµðÀÖ´ÂÁö °¡¸£ÃÄ Áֽøé Á¤¸» °¨»çÇϰڽÀ´Ï´Ù...
±Ùµ¥ Á¦°¡ ¿µ¾î°¡ ª¾Æ¼¿©... msdn À̳ª... codeguru¿¡¼´Â ¾Ö¸¦ ¸¹ÀÌ ¸Ô°Åµç¿©...
°¡´ÉÇϸé... Çѱ۷ΠµÇ¾îÀÖ´Â...^^
±×·³ À̸¸...
Àú¹ø¿¡ Áú¹® ¿Ã·È´ø ¹Ú»ó±ÕÀÔ´Ï´Ù.
Áö±Ý ³×Æ®¿öÅ© °ÔÀÓÂ¥´Â µ¥¿ä...
»ó´ë¹æ¿¡°Ô º¸³»´Â ¸Þ¼¼Áö ±¸Á¶Ã¼¿¡ ¸î°¡Áö¸¦ ´õ ³©°Å³Ö¾ú´õ´Ï
¾Æ¿¹ ¸Þ¼¼Áö°¡ »ó´ë¹æ¿¡°Ô Àü´ÞÀÌ ¾ÈµÇ´Â °Ì´Ï´Ù....
typedef struct
{
int x; //WraithÀÇ Ãʱâ ÁÂÇ¥
int y; //WraithÀÇ Ãʱâ ÁÂÇ¥
int F_Direction;
POINT m_Pos[50]; //WraithÀÇ ¹Ì»çÀÏÀÇ À§Ä¡
bool m_IsInitialize[50]; //¹Ì»çÀÏÀº ÃʱâȵǾú´Â°¡?
int m_Direction[50];//¹Ì»çÀÏÀÇ ¹æÇâÀ» °¡¸®Å°´Â ¹è¿
int m_Index;
} WRAITHPDU, *LPWRAITHPDU;
´ëÃæ ÀÌ·±½ÄÀ¸·Î ±¸Á¶Ã¼¸¦ ¸¸µé¾ú¾ú´Âµ¥...¾ÈµÅ´õ¶ó±¸¿ä...
¿©±â¼ ¹è¿ 50°³Â¥¸® º¯¼ö 3°³¸¦ »©´Ï±î...Àß µÅ±¸¿ä...
À½³Ä....
°ú¿¬ ¸Þ¼¼ÁöÀÇ Å©±â´Â ¾ó¸¶±îÁö °¡´ÉÇѰ¡¿ä.....
±×¸®°í ³×Æ®¿öÅ©ÀÇ ¼ÓµµÃ¼Å©´Â ¾î¶»°Ô Çϸç....
¼Óµµ¿¡ ¸Â´Â ¸Þ¼¼Áö¸¦ ¸¸µé·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö¿ä....
.
.
.
.
¾Æ¹«°Íµµ ¸ð¸£¸é¼....È¥ÀÚ ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇÏ´Â ±Ô´Ï°¡...
Èæ.Èæ~~
¾È³çÇϼ¼¿ä? ȸ»ç ¾ÆÀ̵𸦠¾²°í ÀÖ´Â ·¹ÀÌ¿ÊÀÔ´Ï´Ù.
¿©·¯ºÐ, ÀÌ·± »ý°¢ ÇØº¸¼ÌÁÒ?
º¸Åë ¼ÒÄÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§, ÇÔ¼ö¿¡ ¿ÀÅä º¯¼ö·Î ¹öÆÛ¸¦ ¼±¾ðÇϰí
ÀÏ´Ü ¿©±â´Ù°¡ Çѹø ÀÐÀº ´ÙÀ½ À̰ÍÀ» °¢ Ç÷¹À̾´ÙÀÇ ÀÔ·Â ¹öÆÛ¿¡
º¹»çÇØ¼, ÆÄ½ÌÀ» ÇØ°¡Áö°í ÇϳªÀÇ ¸í·ÉÀ» ²ôÁý¾î³»¼ ó¸®ÇÏÀÚ³ª¿ä..
char buf[BUFFERLEN];
int nread = read( fd , buf , BUFFERLEN );
memcpy( &input_buffer[tail] , buf , nread );
Áï À̶§ º¹»ç°¡ 2¹ø ÀϾ°Ô µÇÁÒ. ¼ÒÄÏÀÇ receive buffer¿¡¼ buf·Î
Çѹø º¹»çµÇ°í, ´Ù½Ã Ç÷¹À̾îÀÇ ÀÔ·Â ¹öÆÛ·Î Çѹø º¹»çµÇ°í.. - -;
ºü¸¦¼ö·Ï ÁÁÀº °× ¼¹ö¿¡¼ ºÒÇÊ¿äÇÑ 2¹øÀÇ º¹»ç¶ó´Ï.. ¿ì¿ô.. ¾ÈµÅ~~
´õ±º´Ù³ª ¼ÒÄÏ¿¡ µé¾îÀÖ´Â µ¥ÀÌŸ°¡ ¹öÆÛº¸´Ù ¸¹À» °æ¿ì, ¿©·¯¹ø Àоî
Áà¾ß Çϱ⠶«½Ã·Î.. (Áï ¹öÆÛ´Â 1k Àε¥ ¼ÒÄÏ¿¡ 8k ÀÇ incoming µ¥ÀÌŸ°¡
ÀÖ´Ù¸é.. ÃÑ 16ȸÀÇ º¹»ç°¡ ÀÌ·ç¾îÁø´Ù´Â ¼Ò¸®ÁÒ. - -;)
==
±×·¡¼, Àú´Â µÎ¹øÂ°·Î ÀÌ·± ¹æ¹ýÀ» ½á ºÃ½À´Ï´Ù. ¼ÒÄÏ¿¡ ¾ó¸¶¸¸ÅÀÇ
µ¥ÀÌŸ°¡ ÀÖ´ÂÁö ioctl(FIONREAD); ¸¦ ½á¼ ¾Ë¾Æº» ÈÄ, ÀÖ´Â ¸¸ÅÀ»
¹Ù·Î Ç÷¹À̾îÀÇ ÀÔ·Â ¹öÆÛ·Î º¹»çÇßÂî¿ä. ÈåÈåÈå..
int available = 0;
ioctl(fd , FIONREAD , &available );
read( fd , &input_buffer[tail] , available );
ÀÌ·¸°Ô ÇÏ¸é º¹»ç°¡ ´Ü 1ȸ¸¸ ÀÖÀ¸¸é µÇ´Ï±ñ.. À¢Áö ÁÁ¾Æº¸ÀÌ´õ±º¿ä.
==
±Ùµ¥.. ioctl(FIONREAD); °¡ ¾ó¸¶¸¸ÅÀÇ ºñ¿ëÀÌ µå´ÂÁö ¸ð¸£°Ú´õ±º¿ä.
Èì.. À¢Áö ¼ö»óÇß½À´Ï´Ù. À̰͵µ ¿ª½Ã ½Ã½ºÅÛÄÝÀ̴ϱî.. Ȥ½Ã º¹»çº¸´Ù
´õ ºñ¿ë(cost)ÀÌ ¸¹ÀÌ µé¸é ¾î¼Áö.. ÇÏ´Â ºÒ¾È°¨ÀÌ »ý±â´õ±º¿ä..
¾îµð¿¡µµ ÀÌ ½Ã½ºÅÛÄÝÀÇ ºÎÇÏ¿¡ ´ëÇØ¼ ¼³¸íÇØ³õÀº µ¥°¡ ¾ø¾î¼¸®..
==
±×·¡¼, Àú´Â ¼¼¹øÂ°·Î ÀÌ·¸°Ô Çß½À´Ï´Ù. ¿ô±ä À̾߱âÀε¥... ÀÏ´Ü
ÀÔ·Â ¹öÆÛ°¡ °¡µæ Âû¶§±îÁö Àо´Ï´Ù. ±×·¡µµ °è¼Ó ÀоîÁø´Ù¸é,
¹öÆÛ¿¡ ¾ÆÁ÷µµ µ¥ÀÌŸ°¡ ³²¾ÆÀÖ´Ù´Â ¼Ò¸®ÀÌÁö¿ä. À̶§ ÀÌÁ¦ ioctl()
À» »ç¿ëÇØ¼ ³²¾ÆÀÖ´Â µ¥ÀÌŸÀÇ Å©±â¸¦ °è»êÇÕ´Ï´Ù. ÀÌ°Ô 0º¸´Ù Å©´Ù¸é
¾î¿ ¼ö ¾øÀÌ ¹öÆÛ¸¦ Áõ°¡½ÃÄÑ¾ß °ÚÁö¿ä. - -;
int nfree = get_input_buffer_free_size();
int nread = read( fd , &input_buffer[tail] , nfree );
if ( nread == nfree ) {
int available = 0;
ioctl( fd , FIONREAD , &available);
if ( available > 0 ) {
resize_input_buffer(available);
read( fd , &input_buffer[tail] , available );
}
}
ÀÌ·¸°Ô Çϴϱî,ioctl()ÀÌ È£ÃâµÇ´Â È®·üÀ» È®- ÁÙÀÏ ¼ö ÀÖ¾ú½À´Ï´Ù.
¹°·Ð È¿°ú´Â ´õ ÁÁ¾ÆÁ³´Ù°í »ý°¢¸¸ Çϰí ÀÖÂî¿ä. īīīī.
´ë½Å ¼Ò½º°¡ º¹ÀâÇØÁ®¼.. ¹ö±×°¡ Ãâ¸ôÇØ¼ °í»ýÀ» ¸¹ÀÌ Çß½À´Ï´Ù.
(¾ÆÁ÷µµ ¹ö±× Çϳª°¡ ¼ÓÀ» ½âÈ÷°í Àִµ¥ Å©°Ô ÇÇÇØ´Â ÁÖÁö ¾Ê´Â
³ðÀ̶ó¼ õõÈ÷ ÇØ°áÇÏ·Á°í ¸¶À½¸Ô°í ÀÖ½À´Ï´Ù.)
==
Èæ. UDP ¶§¹®¿¡ ½ºÆ®·¹½º¸¦ ¸¹ÀÌ ¹Þ°í ÀÖ´Â Â÷¿¡ ÀÌ·¸°Ô ±×³É Çѹø
³²µé ´Ù ¾Æ´Â ÀÌ¾ß±â ½á º¾´Ï´Ù. ũũũ..
±×·³ ¿©·¯ºÐ ¸ðµÎ ¸Þ¸®Å©¸®½º¸¶½º....
TCP ¶ó¸é stream ¼ÒÄÏÀÌ´Ï, ³ª´²¼ ¼øÂ÷ÀûÀ¸·Î ½áÁÖ½Ã¸é µÇ°í,
UDP ´Â getsockopt()·Î º¸³¾ ¼ö ÀÖ´Â ÃÖ´ëÅ©±â ¾ò¾î¼,
±× ÀÌ»ó Å©±â´Â º¸³»¸é ¾ÈµË´Ï´Ù..
¾î¶² Ã¥¿¡¼ ºÃ¾ú´ø °Í °°Àºµ¥,
ÇÁ·ÎÅäÄÝ Çϳª(ÆÐŶ??)ÀÇ Å©±â°¡ Ŭ °æ¿ì.
Çѹø¿¡ ÀоîµéÀÌÁö ¾Ê°í
¿©·¯¹ø¿¡ °ÉÃļ ³ª´©¾î¼ ÀоîµéÀÌ´Â°Ô ÁÁ´Ù°í ±×·¯´õ±º¿ä..
±×·¯´Ï±î..
while(recv(ÁÙÁÙÁÙ) != SOCKET_EORROR);
¿Í °°ÀÌ ¸»ÀÌÁÒ..
¹¹ SOCKET_ERROR°¡ µ¥ÀÌÅͰ¡ ¾øÀ» ¶§¸¸ ³ª´Â °Ô ¾Æ´Ï´Ï±ñ
Á¶±Ý ´õ º¹ÀâÇØÁ®¾ß°ÚÁö¸¸¿ä..
Á¦°¡ ÀÌ·± ±ÛÀ» ¿Ã¸®°Ô µÉ ÁÙÀ̾ß...
¸Þ½ÃÁö Å©±â´Â ¾ó¸¶°¡ µÇ´øÁö »ó°üÀÌ ¾ø½À´Ï´Ù.
´Ù¸¸ Å« ¸Þ½ÃÁö´Â ºÐÇÒÀÌ µÇÁö¿ä. µû¶ó¼, ¾µµ¥¾ø´Â ¶ó¿ìÅÍ¿¡
ºÎÇϸ¦ ÁֹǷÎ, °¡±ÞÀûÀ̸é Å« ¸Þ½ÃÁö´Â ÇÇÇÏ´Â °Ô ÁÁ½À´Ï´Ù.
Á¦ Å×½ºÆ® °á°ú·Î´Â ·£ »ó¿¡¼ ms À©µµ¿ìÀÇ tcp/ip´Â
¾à 7k ¹ÙÀÌÆ®°¡ Çϳª·Î ³Ñ¾î°©´Ï´Ù..
±× ÀÌ»óÀ̶ó¸é, ·£ »ó¿¡¼µµ ºÐÇÒÀÌ µÈ´Ù´Â °ÅÁÒ.
¹°·Ð, ½ÇÁ¦ ÀÎÅÍ³Ý »ó¿¡¼´Â ´õ ÀÛ°Ô ºÐÇÒµÉ ¼öµµ ÀÖ½À´Ï´Ù.
(´ç¿¬È÷ ´õ ÀÛ°Ô ºÐÇҵ˴ϴÙ... ¤Ì¤Ì)
µû¶ó¼, ¸Þ½ÃÁöÀÇ »çÀÌÁî°¡ Å©°Ç ÀÛ°Ç,
¼Û¼ö½Å½Ã¿¡ ·çÇÁ¸¦ µ¹¸®¸é¼ ÇÏ´ø°¡, »çÀÌÁ È®ÀÎÇØ¾ß ÇÕ´Ï´Ù.
°¡´ÉÇϸé ÀÛÀº ¸Þ½ÃÁö°¡ ÁÁ´Ù´Â °ÍÀº.. ¶Ç ¹®Á¦°¡ »ý±é´Ï´Ù..
ÀÛÀº ¸Þ½ÃÁö¸¦ ÀÚÁÖ º»³»´Ù¸é ¹èº¸´Ù ¹è²ÅÀÌ Ä¿Áö°Ô µË´Ï´Ù..
Çì´õÀÇ »çÀÌÁî¸¸ÇØµµ tcp 20¹ÙÀÌÆ®, ip 20¹ÙÀÌÆ® ÀÌ·¸°Ô
40¹ÙÀÌÆ®°¡ ³Ñ¾î°©´Ï´Ù.
±×·¡¼, ÃÖ¼±Àº.. ¿©·¯ºÐµé²²¼ ¸»¾¸ÇϽÃÁö¸¸..
°¡±ÞÀû ¸Þ½ÃÁö¸¦ ÀÚÁÖ º¸³»Áö ¾Êµµ·Ï Çϸé¼..
º¸³»´Â ¸Þ½ÃÁöÀÇ »çÀÌÁî´Â ÃÖ¼Ò·Î ÇÏ´Â °Ì´Ï´Ù..
(À̺κÐÀÌ ¸Þ½ÃÁö ¼³°è »ó¿¡¼ °¡Àå ¾î·Æ½À´Ï´Ù.. ¤Ð¤Ð)
±×·³
Àâ´ãÀÔ´Ï´Ù...
Àú°°Àº °æ¿ì´Â.. ¹öÆÛ¸¦ ÃÖ´ë ¸Þ½ÃÁö »çÀÌÁî ÀÌ»ó Àâ°í ¾²´Â°Ô
ÁÁ´Ù°í »ý°¢ÇÕ´Ï´Ù. ¼¹öÀÇ ¸Þ¸ð¸®¾ß ½Å°æ¾µ Çʿ䰡 ¾øÀ»Å×´Ï.
º¹»ç¸¦ µÎ¹ø ÇÒ ÇÊ¿ä ¾øÀÌ..
¸Þ½ÃÁö¸¦ ´Ù ¹Þ¾ÆÁú¶§±îÁö ¹öÆÛ¿¡ °è¼Ó ¹Ð¾î ³Ö°í..
´Ù ¹Þ¾ÒÀ½À» È®ÀÎÇϸé, À̶§ ÇѹøÀÇ º¹»ç·Î ÇØ´ç Ŭ¶óÀ̾ðÆ®ÀÇ
¸Þ½ÃÁö Å¥¿¡ ³Ö¾î ¹ö¸®Áö¿ä.
ÀúÀÇ °æ¿ì ÃÖ´ë »çÀÌÁî¶ó°í ÇØ ºÃÀÚ... ¸î k ¾ÈµÇ´Ï±î..
¸Þ¸ð¸® º¹»ç´Â »ç½Ç ¾ÏÈ£È °èÃþÀ̳ª ÀÌÈÄ¿¡µµ ¸¹Àºµ¥..
¼ÒÄÏ °èÃþ¿¡¼±îÁö º¹»ç¸¦ ½ÃŰ´Â °Ç.. Á».. ±×·¸´õ±º¿ä.
±×·³.
TCP ¿¡¼ ¸Þ¼¼Áö ºÐÇÒÀ̶ó¸é,
ÀÎÅͳÝÀ» °ÅÄ¥°æ¿ì ¿©·¯ ³×Æ®¿÷µéÀ» Áö³ª°Ô µË´Ï´Ù..
°ÅÄ¡°Ô µÇ´Â ¸¹Àº ³×Æ®¿÷µé¿¡´Â Àú¸¶´Ù MTU°¡ ÀâÇô Àִµ¥
°á±¹ Àü¼Û °¡´ÉÇÑ ÃÖ´ëÀÇ ÆÐŶũ±â´Â °ÅÄ¡°Ô µÇ´Â ³×Æ®¿÷µéÁß
ÃÖ¼ÒÀÇ MTU °ªÀÌ µÇÁö¿ä.
È¿À²À» µûÁø´Ù¸é ÃÖ¼Ò MTU°ª¸¸ÅÀ» º¸³»ÁÖ¸é µÇÁö¸¸,
TCPÀÇ Connection À̶õ°ÍÀº ¹°¸®ÀûÀΰÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡
¿¬°á µÈ ÈÄ¿¡µµ °æÀ¯Çϴ ȸ¼±Àº ¾ó¸¶µçÁö ¹Ù²ð¼ö ÀÖ½À´Ï´Ù.
Àü¼Û·®¿¡¼ÀÇ È¿À²¸¸À» µûÁø´Ù¸é À̰ÍÀú°Í °¡¸±°Í ¾øÀÌ
´ë·®ÀÇ ¸Þ¼¼Áö¸¦ ÇѲ¨¹ø¿¡ ½á¹ö¸®¸é.. --;
ÀúÀý·Î ÃÖÀûÀÇ Å©±â·Î ³ª´©¾î Áö°Ô µÇ°ÚÁÒ.
ÇÏÁö¸¸ °ÔÀÓ¿¡¼ ÀÌ·¸°Ô ÇÒ¼öÀÖ´Â °æ¿ì¶õ ÈçÄ¡ ¾ÊÁÒ.
ÇÇÇØ¾ß ÇÒ°ÍÀº ¾ÆÁÖ ÀÛÀº ¸Þ¼¼ÁöµéÀ» ¿©·¯°³ º¸³»´À°Í »ÓÀ̶ó°í »ý°¢ÇÕ´Ï´Ù
ÀÌ°Í ÇÇÇÏ´Â°Ç ±×´ÙÁö ¾î·ÆÁö ¾ÊÁö¿ä.
½Ã°£Â÷°¡ ±×´ÙÁö ³ªÁö ¾Ê´Â ¸Þ¼¼ÁöµéÀ» ¹öÆÛ¸µÇØ °°ÀÌ ³¯·ÁÁÖ¸é µÇ´Ï±î¿ä.
- Testors
ps. Å©¸®½º¸¶½Ã±º¿ä... ¸ðµÎ ÁÁÀº½Ã°£ µÇ¼¼¿ä..
³×Æ®¿÷¶õ¿¡ Áú¹®Àº ÷À̳׿ä. ^^;
Å©¸®½º¸¶½º, »õÇØµµ ÀÌ¹Ì ¸ÂÀÌÇÑ ½ÃÁ¡¿¡¼, Á¤¸» ´Ê°Ô ¾²´Â º¯ÀÌ ¾Æ´Ñ°¡ ½Í±º¿ä. :)
±×·±µ¥, ºÒÇàÈ÷µµ, ¾Æ·¡¿¡ ÀÖ´Â ³»¿ëÀº ´ëºÎºÐ ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ¿¡ °üÇÑ °ÍÀÎÁö¶ó,
ÀçÀÛ³â ÀÌÈÄ·Î ´ÙÀÌ·ºÆ®Ç÷¹À̸¦ ¾È¸¸Áø »óȲ¿¡¼ ´äº¯À» ÇØµå¸± ¼ö ¾ø¾î¼.. "¹¹ Åä
´Þ°Å ¾ø³ª.." ã¾Æº¸´Ï±î Çϳª ¹ß°ßµÇ³×¿ä. ÇæÇæÇæ..
±×·³, ¾Ïư, ÀÌÁ¦ Å並 ´Þ¾Æº¸ÁÒ..
ÅÂÈ£´ÔÀÌ ¾²½Ã´Â ¹æ¹ýÀ», TCP ¼ÒÄÏ¿¡¼ ¾²¸é, 'ÆÐŶÀÌ Âɰ³Áö°Å³ª ¹¶ÃÄÁö´Â' ¹®Á¦°¡
¹ß»ýÇÕ´Ï´Ù. (ÀÌ ¹®Á¦¿¡ ´ëÇØ¼´Â Áö³ª°£ ±ÛÀ» È®ÀÎÇØº¸¼¼¿ä. ¾Æ¿ï·¯, ±× ±ÛÀ»
Àо½Ã¸é, ´õ ÁÁÀº ¹æ¹ýÀ» È®ÀÎÇÏ½Ç ¼ö ÀÖÀ»°Ì´Ï´Ù.)
ÇÏÁö¸¸, ÅÂÈ£´ÔÀÇ ¹æ½ÄÀº, UDP ¼ÒÄÏ¿¡¼ Àß µ¹¾Æ°¥°Ì´Ï´Ù.
127.0.0.1Àº ÀÚ±â Áý¿¡¼ Å×½ºÆ® ÇÒ¶§ ¾´´Ù°í ¾Ë°í
Àְŵç¿ä(¾Æ´Ï¾îµµ ¹Ù²Ù¸é µÇ´Ï ¹Ý·ÐÀº Á¦±âÇÏÁö¸¶¼¼¿ä^^)
±×·±µ¥ ¹ÏÀ»¼ö ÀÖ³ª¿ä?
±×´Ï±î Á¦°¡ üÆÃ ÇÁ·¥À» ¸¸µå´Ï±î¿ä.
Á¦°¡ ¼¹öÇѰ³ Ʋ¾î³õ°í
¿©·¯°³¿¡ Ŭ¶óÀÌ¾ðÆ®¸¦ ¿¬´Ù°í ħ´Ï´Ù.
Á¦°¡ ÇØº»°á°ú ²Ï ±¦Âú°Ô µ¹¾Æ°¬°Åµç¿ä.
±×·±µ¥ ÀúÈñÁýÀÌ ¼¹ö°¡ ¾ÊµÅ¿ä(µÎ·ç³ÝÀÔ´Ï´Ù.)
±×·¡¼ Á¦°¡ ÁøÂ¥ ¼¹ö¸¦ ÇØº¸Áö ¸øÇß¾î¿ä.
127.0.0.1¿¡ ¸¹ÀÌ Á¢¼Ó ÇѰŶû.
ÁøÂ¥ ¼¹ö¿¡ ¸¹ÀÌ Á¢¼ÓÇѰŶû Ʋ¸³´Ï±î?
¼Óµµ Â÷ÀÌ´Â ³ª°ÚÁö¸¸. 127.0.0.1¿¡ ÀߵŸé Àߵųª¿ä?
´äº¯¹Ù¶ø´Ï´Ù.^^
ÀÚ½ÅÀÇ ·ÎÄà ¼¹ö ÁÖ¼ÒÀ롂 ¸Â±¸¿ä.
À¸À½.. ·ÎÄÿ¡¼ ¸¹ÀÌ Á¢¼ÓÇѰųª ¸®¸ðÆ®¿¡¼ ¸¹ÀÌ Á¢¼ÓÇѰųª ÇÁ·Î±×·¥ÀÇ
ºÎÇÏ´Â °°À» °Ì´Ï´Ù. ´ÜÁö ·ÎÄÿ¡¼ Å×½ºÆ® ÇÏ½Ç ¶§ send ¿Í recv (ȤÀº read,
write) À» ¾²¼Ì´Ù¸é ÆÐŶÀÌ Â©¸®´Â Çö»óÀ» ÀüÇô °æÇèÇÏ½Ç ¼ö°¡ ¾øÀ»
°Ì´Ï´Ù. (¾Æ.¸¶.µµ.)
ÆÐŶÀÌ Â©¸®´Â Çö»óÀ̶õ,
º¸³½ ³ð(send)Àº ´Ù º¸³Â´Âµ¥
¹Þ´Â ³ð(recv)ÀÌ Âñ²ûÂñ²û ¹Þ´Â Çö»óÀÔ´Ï´Ù.
±×·¡¼ º¸Åë ¹Þ´Â ³ðÀÇ °æ¿ì Âñ²ûÂñ²û ¹Þ¾Æ¼ ¹¶Ãļ ó¸®ÇØÁÖ´Â ÀÛ¾÷À»
ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. °£´ÜÇÑ Ã¤ÆÃ ÇÁ·Î±×·¥À̶ó¸é.. À§ÀÇ Ã³¸®´Â Çʿ䰡 ¾ø°í
ÅØ½ºÆ® MUD ó·³ \n ¹®ÀÚ°¡ ¿Ã ¶§±îÁ¤ recv ÇÏ¸é µÇ°Î±º¿ä.
±×·³
-ºñ¿±
Èì.. ´äº¯ °¨»çÇϱ¸¿ä.
Á¦°¡ ¾ÆÁ÷ ¾ÊÇØºÃ±â ¶§¹®¿¡ ¶Ç ´Ù½Ã ¸ð¸£´Â
ºÎºÐÀÌ »ý°å³»¿ä..
Áú¹®Àº¿ä.. 127.0.0.1À» ¾µ¶§´Â ´Ù¸¥ Á¤º¸°¡ ¾Ê¿À´õ±º¿ä.
(Á¦°¡ Àü¿¡ ÄÉÀ̺í Åë½ÅÀ» ÇØºÃ´Âµ¥. ÀÌ°Ç ³ëÀÌÁð°¡? ÀÌ·±
°Íµµ Á¶±Ý ÀÖ¾ú´Âµ¥¿ä. -_-;; ¾Æ´ÒÁöµµ ÇÁ·½À» ³Ñ ¹«½ÄÇϰÔ
ÇØ¼¸®^^)
¾Æ! ±×¸®°í recv·Î ¹«ÇÑ·çÇÁ µ¹¸®±â´Â^^
Á¦°¡ ¿ø·¡ ¹«ÇÑ·çÇÁµ¹¸®±â¸¦ ½È¾îÇØ¼
ÆÐŶÀ» ¸¸µé¿¹Á¤
´ëÃæ¿¡ ÆÐŶ
[´ëȱÛ][2]¾È³ç~~
ÀÌ·±½ÄÀ¸·Î( 2¶ó°í ¾²¿©Áø°÷Àº ÀÎÆ®Çü ¸»ÀÇ ±æÀÌ
ÆÐŰÀ» º¸°í ¸»ÀÇ ±æÀÌ ¸¹Å ¹Þ¾ÆÁ³À¸¸é ó¸®Çϸé ÁÁÀ»°Å
°°¾Æ¿ä.
¾È³çÇϼ¼¿ä.
¾û¶×ÇÑ ÁÖ¼Ò°ªÀ» ³Ö°í connect()¸¦ È£ÃâÇÏ¸é ºí·ÏÀÌ µË´Ï´Ù. -_-;
¿¹Àü¿¡´Â °á°ú¿¡ »ó°ü¾øÀÌ WSAEWOULDBLOCK °ªÀ» Ã¼Å©ÇØ¼ ó¸®ÇÒ ¼ö ÀÖ¾ú´Âµ¥..
ÂÁ..¹¹°¡ ¾î¶»°Ô ´Ù¸¥Áø ¸ô¶óµµ connect()¸¦ È£ÃâÇÏ¸é µµÀúÈ÷
´ÙÀ½ÁÙ·Î À̵¿ÇÒ ¼ö°¡ ¾ø³×¿ä.
WSAEWOULDBLOCK ´Â ºí·ÏµÇ¾î¾ß ÇÒ »óȲÀε¥,
async ¸ðµå·Î ¼¼ÆÃµÇ¾î ÀÖ¾î¼ ¹Ù·Î ¸®ÅÏÇß´Ù.. ¶ó´Â ¸Þ¼¼ÁöÀä,
async ¸ðµå¶ó¸é À߸øµÈ ÁÖ¼Ò¸¦ ³Ö¾îµµ ¹Ù·Î ¸®ÅϵÉÅÙµ¥¿ä..?
²¨À̲¨ÀÌ~~ T_T µµ¿ÍÁÖ¼¼¿ä.
Á¦°¡ ¿äÁò¿¡ ½ºÅ¸Çü½Ä¿¡ ³×Æ®¿öÅ©¸¦ ±¸»óÀ» Çߴµ¥¿ä.
±×°Å¿¡¼. ²À ¾Ë¾Æ¾ß ÇÒ°Å °°¾Æ¼¿ä.
ipÁÖ¼Ò¸¦ ¾ò´Â ¹ýÀ»Á» °¡¸£ÄÑ ÁÖ¼¼¿ä.
Á¦°¡ Ã¥ÀÌ ¾ø¾î¼ ¿©±â´Ù°¡ µµ¹è¸¦ ¤Ð_¤Ð
Á˼º Çϱ¸¿ä. ºü¸¥ ´äº¯ ±â´ëÇÕ´Ï´Ù~~
Á¢¼ÓÀÚ IP´Â ÇØ´ç ¼ÒÄÏ¿¡ getpeername() À» È£ÃâÇÏ½Ã¸é ¾òÀ»¼ö ÀÖ½À´Ï´Ù..
Ã¥À» Çϳª »ç½ÉÀÌ.. --;
MFCÀÇ CSocket Ŭ·¡½º³ª ASyncSocket Ŭ·¡½º·Î ÆÐŶÀ» ¹ÞÀ»°æ¿ìÀä...
¼¹ö¿¡¼ Send()¸¦ »ç¿ëÇÏ¿© Çѹø¿¡ 100K Á¤µµµÇ´Â ´ë¿ë·®À» º¸³ÂÀ»¶§
Ŭ¶óÀÌ¾ðÆ®¿¡¼´Â À̸¦ ¾î¶»°Ô ¹Þ¾Æ¾ßÇϳª¿ä?
CSocketÀ¸·Î ¹Þ´Â °æ¿ì Receive()°¡ ¿Ï·áµÉ¶§±îÁö ºí·°Å·µÇ´Â °ÍÀ¸·Î ¾Æ´Âµ¥..
±×·¸´Ù¸é Receive()°¡ ¿Ï·áµÇ¾úÀ» °æ¿ì 100K¸¦ ¸ðµÎ ¹Þ¾Ò´Ù´Â ¸»ÀÌ µÇ´Â°Ì´Ï±î?
Ȥ½Ã ¼¹ö¿¡¼ Çѹø¿¡ 100K¸¦ ¸ðµÎ Send()ÇÑ´Ù°í Ä¡´õ¶óµµ...
Ŭ¶óÀÌ¾ðÆ®¿¡¼ ¹ÞÀ»¶§´Â OnReceive °¡ ¿©·¯¹ø È£ÃâµÇ´Â°ÇÁö ±Ã±ÝÇÕ´Ï´Ù.
Áï ÆÐŶÀÌ ¿©·¯¹ø Àß·Á¼ µµÂøÇÒ¶§¸¶´Ù Receive()ÇØ¾ßÇÏ´ÂÁö ¾Ë°í½Í½À´Ï´Ù.
¸¸ÀÏ ASyncSocket À̶ó¸é ¿©·¯¹ø Revceive()Çϴ°ÍÀº ´ç¿¬ÇҰŶó°í »ý°¢Çϴµ¥
CSocket ¿¡¼µµ ±×·±Áö ¾Æ½Ã´ÂºÐÀº ´äº¯ÇØÁÖ¼ÌÀ½ ÇÕ´Ï´Ù. ^^
P.S Ãß°¡ÇÕ´Ï´Ù.
CSocket°ú °°Àº ºí·°Å·¼ÒÄÏÀ̶ó¸é(½ÇÁ¦·Î´Â ³Íºí·°Å·À̰ÚÁö¸¸) Çѹø¿¡ 100K¸¦
Send()ÇÏ¸é ´Ü ÇѹøÀÇ Send()·Î 100K ¸ðµÎ Àü¼ÛÀ̵ǰÚÁÒ?
±×·±µ¥ CSocketÀÇ °æ¿ì ³»ºÎÀûÀ¸·Î ASyncSocketÀ» »ç¿ëÇϴ°ÍÀ¸·Î ¾Ð´Ï´Ù.
°á±¹ Çѹø¿¡ Send()µÇÁö ¸øÇÏ°í ³»ºÎÀûÀ¸·Î ºí·°Å·ÀÌ ÇØ¼ÒµÇ¸é
Á¶±Ý¾¿ Á¶±Ý¾¿ º¸³»¼ ÇѹøÀÇ Send()·Î ¿Ï·áµÇ´Â°Í ó·³ º¸À̴°̴ϱî?
±×·¡¼ Ŭ¶óÀÌ¾ðÆ®¿¡¼ OnReceive()°¡ ¿©·¯¹ø È£ÃâµÇ´Â °ÍÀÎÁö¿ä?
¿¡±¸ º¹Àâ´Ù....
¾Æ·¡¿¡ Áú¹®ÇÑ ÆÐŶ µµÂø ÇüÅ´ ȥÀÚ¼ À̰ÍÀú°Í Å×½ºÆ® ÇÑ °á°ú...
¿¹»ó°ú ºñ½ÁÇϴٴ°ÍÀ» ¾Ë¾Ò½À´Ï´Ù. ±×·±µ¥ Send´Â ¾à°£ ´Ù¸£´õ±º¿ä.
Ȥ½Ã³ªÇؼ Çѹø¿¡ 1M Á¤µµµÇ´Â µ¥ÀÌÅ͸¦ SendÇß½À´Ï´Ù.
(Local LAN »ó¿¡¼ Å×½ºÆ®ÇÑ °ÍÀÔ´Ï´Ù)
È®ÀÎÇØº» °á°ú Send()´Â 1Mµµ Çѹø¿¡ µÇ´õ±º¿ä.
(Âü°í·Î MFCÀÇ ºñµ¿±â ¼ÒÄÏ Å¬·¡½ºÀÎ CASycnSocket À» »ç¿ëÇÏ¿´½À´Ï´Ù)
±×·¯³ª ¼ö½ÅÃø¿¡¼´Â À߸øµÈ ¿¬»ê¿¡·¯¸¦ ÀÏÀ¸Å°¸ç ´Ù¿îµÆ½À´Ï´Ù.
¿øÀÎÀ» ºÐ¼®ÇÏ·Á°í OnReceive()¿¡¼ µ¥ÀÌÅ͸¦ ¹ÞÀº¾çÀ» Ãâ·ÂÇØÁÖ´Â ´ëÈ»óÀÚ¸¦
¶ì¿ì´Ï±î 8056 ¹ÙÀÌÆ®¾¿ ÂßÂß µé¾î¿À´Ù°¡ ¹öÆÛ°¡ ´Ù Â÷¼ ´Ù¿îµÇ´Â°Í °°¾Ò½¿´Ù.
Áï µ¥ÀÌÅͰ¡ ¿©·¯¹ø ÆÐŶ ºÐÇÒµÇ¾î¼ °è¼ÓÇØ¼ µé¾î¿Â´Ù´Â À̾߱âÀä..
¹®Á¦´Â µ¥ÀÌÅͰ¡ ¼ö½ÅµÇ¸é SendMessage()¸¦ »ç¿ëÇÏ¿© µ¥ÀÌŸ¸¦ ¼ö½ÅÇ϶ó´Â ¸Þ¼¼Áö¸¦
³¯·ÁÁá´Âµ¥... (¸Þ¼¼Áö¸¦ ¹ÞÀ¸¸é ¹öÆÛ¸¦ ÀÐ°í³ª¼ ºñ¿öÁÝ´Ï´Ù)
¹öÆÛ¿¡ µ¥ÀÌÅ͸¦ ºñ¿ì´Â ¼Óµµº¸´Ù OnReceive()°¡ ´õ»¡¸® ¹ß»ýÇÕ´Ï´Ù.
OnReceive()°¡ È£ÃâµÇ¸é Receive()¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ¹Þ°í³ª¼ SendMessage()·Î
¾Ë·ÁÁֱ⵵ Àü¿¡ ¶Ç´Ù½Ã OnReceive()°¡ È£ÃâµÇ´Â°Í °°½À´Ï´Ù.
±×·¡¼ ¹öÆÛ¸¦ ºñ¿ì±âµµ Àü¿¡ ÀÚ²Ù Receive()ÇϰԵǼ ¹öÆÛ°¡ ²Ë Â÷¹ö¸®´Â°Í °°³×¿ä
¹öÆÛÀÇ ³»¿ëÀ» ºñ¿ì°í ³ª¼ ´Ù½Ã Receive()¸¦ ÇϰԲûÇÏ´Â ¹æ¹ýÀº ¾øÀ»±î¿ä?
±×¸®°í... OnReceive()´Â ¸ÞÀÎ À©µµ¿ìÀÇ ¸Þ¼¼Áö ·çÇÁ »óÅÂ¿Í »ó°ü¾øÀÌ...
¼ö½Å µ¥ÀÌÅͰ¡ ÀÖ´Ù¸é ¹«Á¶°ÇÀûÀ¸·Î È£ÃâµÇ´Â °ÍÀԴϱî?
´Ù½Ã ¸»Çϸé OnReceive()¸¦ ´Ù ó¸®Çϱ⵵ Àü¿¡ ¶Ç OnReceive()°¡ È£ÃâµÇ±âµµ
ÇÏ´Â °ÍÀÎÁö ±Ã±ÝÇÕ´Ï´Ù......
Á» ±ÞÇÏ´Ï±î ¾Æ½Ã´Â ºÐÀº ´äº¯ ÁÖ¼ÌÀ¸¸é ÇÕ´Ï´Ù... ¤Ð.¤Ð
À½.. 1¸Þ°¡¸¦ ÇÑÅ¥¿¡ º¸³Â´Âµ¥ Âɰ³Á®¼ ¹Þ¾ÆÁ³´Ù¸é TCP°Ú³×¿ä.
´ÔÀÌ °ÆÁ¤ÇϽŰÍó·³.. À½.. º¸³»´Â³ÑÀº ¸¶±¸ º¸³»°í
¹Þ´Â³ðÀº ´Ù ó¸®ÇÏÁö ¸øÇؼ ¿¡·¯³ª´ÂÀÏÀº ¾ø½À´Ï´Ù.
1¸Þ°¡¸¦ ÅëÂ¥·Î º¸³»°Ô µÇ¸é ¾îµð¼±°¡ Âɰ³¼ º¸³»´Âµ¥¿ä,
ù¹øÂ° ºí·°À» º¸³Â´Ù°í ÇßÀ»¶§,
¹Þ´ÂÂÊ¿¡¼ ±× ù¹øÂ°°ÍÀ» ¹Þ¾Ò´Ù´Â ´ä½Å(ACK)¸¦ º¸³»ÁÖ±â Àü¿¡´Â
µÎ¹øÂ° ºí·°Àº ¾Èº¸³»°í ´ë±âÇÏ°Ô µË´Ï´Ù.
(°¡²û Ŭ¶óÀ̾ðÆ®ÂÊ¿¡¼ È¿À²À» À§ÇØ ÀڱⰡ º¸³¾ µ¥ÀÌÅ͸¦ 300msÁ¤µµ ±â´Ù·È´Ù°¡
µ¥ÀÌÅÍ ³¡¿¡ ACK¸¦ ºÙ¿©¼ º¸³»±âµµ ÇÕ´Ï´Ù. ÀÌ·¡¼ TCPÂÊÀº ¿¹»óÄ¡ ¸øÇÑ
Áö¿¬½Ã°£ÀÌ »ý±â±âµµ..)
¸¸¾à ´ë±âÇϰí ÀÖ´Â µ¥ÀÌÅͰ¡ ¸¹¾Æ¼ ³»ºÎ¹öÆÛ°¡ °¡µæÂ÷¸é
Send ½Ã¿¡µµ ºí·°ÀÌ ÀϾ°Ô µÇÁö¿ä. ¹¹ µå¹®°æ¿ìÀÔ´Ï´Ù¸¸.
¾Æ¹«Æ° º¸³»´Â³ÑÀº ¸¶±¸ º¸³»°í ¹Þ´Â³ÑÀº ¹Þ´Ù°¡ Çã´ö¿©¼ ¿¡·¯³ª´Â°Ç
¼ÒÄÏ ¶óÀ̺귯¸® ¼öÁØ¿¡¼´Â ÀϾÁö ¾Ê½À´Ï´Ù.. °¡ ¿äÁöÀÔ´Ï´Ù.
¿øÇϽô ´äÀÏÁø ¸ð¸£Áö¸¸, Âü°íÇϼ¼¿ä.
- Testors
ÆÐŶÀÌ Âɰ³Áö´Â°Ç Å×½ºÆ®¸¦ ÅëÇØ¼ ¾Ë°Ô µÇ¾ú½À´Ï´Ù.
±×·±µ¥ 1M¸¦ ÇѲ¨¹ø¿¡ SendÇÏ¸é ¼ö½ÅÃø¿¡¼ ´Ù¿îµÇ´Â ÀÌÀ¯¸¦ ¸ð¸£°Ú¾î¿ä.
ÀÛ°Ô ³ª´©¾î¼ ¿©·¯¹ø ¼¾µåÇÏ¸é ¹®Á¦¾øÀÌ ¹Þ´øµ¥...
100K·Î Âɰ³¸é Àß ¹Þ´õ±º¿ä. ±×·±µ¥ 1M¸¦ Çѹø¿¡ ³¯¸®¸é...
¼ö½ÅÃøÀÌ ´Ù¿îµË´Ï´Ù.
¹°·Ð ¼ö½Å¹öÆÛ´Â 1M¸¦ ÃæºÐÈ÷ ¹Þ°íµµ ³²À»¸¸Å ³Ë³ËÇÏ°Ô ÁغñÇØµÐ »óÅ¿´±¸¿ä
³»ºÎ ³×Æ®¿÷»ó¿¡¼ Å×½ºÆ®ÇغýÀ´Ï´Ù.
¹öÆÛ °ü¸®¸¦ À߸øÇؼ ±×·±°¡?? ±ÜÀû...
¹öÆÛ´Â ÀÌ»óÀÌ ¾ø¾ú´Âµ¥.. Èæ~
¾ÆÂü... 1M¸¦ ÇѲ¨¹ø¿¡ Àü¼ÛÀ» ÇØµµ.. ¼ö½ÅÃø¿¡¼ ¹ÞÀ»¶§¸¶´Ù ¸Þ¼¼Áö¹Ú½º¸¦
¶ì¿ì´Ï±î ¾à°£¾¿ µô·¹À̰¡ µÇ¼ ±×·±Áö ´Ù¿îÀÌ ¾ÈµÇ´õ±º¿ä.
±×³É ¹ÞÀ¸¸é ´Ù¿îµÊ... (Ȥ½Ã Receive ¸Þ¼¼Áö°¡ ÆøÁÖÇÏ¿© À©µµ ¸Þ¼¼Áö ¹öÆÛ°¡
²Ë Â÷¹ö¸°°Ç ¾Æ´ÒÁö...)
Èæ.. ¸ô°Ú¾î¿ë...ÄÚµå ¾îµð¿¡¼ ´Ù¿îµÇ³ª¿ä?
ÀçÈÆ´ÔÀÌ ÀÛ¼ºÇÑ ¹öÆÛÂÊ ÄÚµåÀΰ¡¿ä..
¾Æ´Ï¸é MFC Ŭ·¡½º¿¡¼ ´Ù¿îµÇ³ª¿ä..?
´Ù¿îµÇ´Â°÷ ±ÙóÀÇ Äڵ带 °°ÀÌ ±Ü¾î ¿Ã¸®½Ã¸é ¹®Á¦ ÆÄ¾ÇÀÌ ½¬¿ïµí ½Í³×¿ä.
udp¼ÒÄÏ¿¡¼
À©µµ¿ì ¸Þ¼¼Áö À̺¥Æ®¸¦
¹ÞÀ»¶ó¹È ¾îÄÉÇØ¾ß ÇÏ´ÂÁö
À©¼ÓÀ» °øºÎÇϰí ÀÖ´Â Ãʺ¸ÀÚ ÀÔ´Ï´Ù........
accept ¿Í.. select.. recv ÀÇ °ü°è°¡ Àß ÀÌÇØ°¡ ¾ÈµÇ°¡Áö±¸¿ä..
accept ÇÒ¶§ select ·Î °Ë»ç¸¦ ÇØ¼ Çϱ¸¿ä...
recv ÇÒ¶§µµ select ·Î °Ë»ç¸¦ ÇØ¼ Çϱ¸¿ä..
µÎ°¡Áö ¸ðµÎ readfds ¸¦ °Ë»çÇØ¼ »ç¿ëÇϴµ¥¿ä.. ±×·¸°Ô µÇ¸é
µ¥ÀÌŸ°¡ ¿Íµµ accept ·Î µé¾î°¥ °æ¿ì°¡ Àִ°ǰ¡¿ä ?
¿¬°á ¿äûÀÌ µé¾î¿Ã´ë recv ·Î °¥¼öµµ ÀÖ°Ô µÇ´Â°Ç°¡¿ä ?
... ¿ä ºÎºÐÀÌ ±Ã±ÝÇØ¼ ´ÙÀ½À¸·Î ³Ñ¾î°¥ ¼ö°¡ ¾ø¾î¿ä.. -_-;
±×¸®±¸¿ä.. listen ÇÔ¼ö¿¡´Â 1~5 »çÀÌÀÇ °ªÀ» ³Ö¾î¾ß ÇÑ´Ù°í Çϴµ¥..
5¸í ÀÌ»óÀº ´ë±âÇÒ ¼ö ¾ø°Ô µÇ´Â°Ç°¡¿ä ?... .. .. . .
(listen À» ²À ÇØÁà¾ß Çϳª¿ä ? )
ÀÌ»óÀÔ´Ï´Ù...... . .
TCP ¼ÒÄÏÀ» ¸¸µé¸é ¼ÒÄÏ µð½ºÅ©¸³ÅͰ¡ Çϳª ³ª¿ÀÁÒ.
±×°Ô accept ¹Þ´Â ¼ÒÄÏÀÔ´Ï´Ù.
°Å±â¿¡ READ FD Ç÷¡±×°¡ °É¸®¸é Á¢¼Ó¿äûÀÌ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.
Á¢¼Ó¿äû ¹Þ¾Æ accpet ¹ÞÀ¸¸é ¶Ç ¼ÒÄÏ µð½ºÅ©¸³ÅͰ¡ ³ª¿ÀÁÒ.
±×°Ç Ŭ¶óÀÌ¾ðÆ®¿Í ¿¬°áµÈ ¼ÒÄÏÀÔ´Ï´Ù.
±×°Í¿¡´Ù I/O ÇÏ¸é µÇÁÒ.. ´Ù¸¥ ¼ÒÄÏÀÌ´Ï
READ °¡ °ãÄ¡Áø ¾ÊÁö¿ä.
UDP Àǰæ¿ì´Â "¿¬°á"ÀÇ °³³äÀÌ ¾Æ¿¹ ¾øÀ¸¹Ç·Î,
READ´Â ¸ðµÎ ÆÐŶ µµÂøÇѰ͵éÀÔ´Ï´Ù.
recvfrom ¿¡¼ º¸³½ÀÌÀÇ ÁÖ¼Ò, µ¥ÀÌŸ°¡ °°ÀÌ ³Ñ¾î¿É´Ï´Ù.
listen ÀÇ °æ¿ì´Â accept »çÀÎÀÌ µé¾î¿ÔÀ»¶§ Á¦´ë·Î 󸮸¸ ÇØÁشٸé
5Á¤µµ Àâ¾ÆÁ൵ º°´Ù¸¥ ¹®Á¦´Â ¾ø½À´Ï´Ù.
½ºÅ¸¸¦ ÇÏ´Ù°¡ ¹®µæ UDP´Â ¾î¶»°Ô ¿¬°á Á¾·á¸¦ ¾Ë¾ÆÃ§±î ±Ã±ÝÇØÁý´Ï´Ù.
TCP´Â Ŭ¶óÀÌ¾ðÆ®¸¶´Ù ÇÚµé(SOCKET)ÀÌ ÀÖ¾î¼ °¢ Çڵ鸶´Ù
¿¬°áÀÌ ²÷±â¸é À̺¥Æ®³ª ¸Þ¼¼Áö¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Â µ¥(À©µµ ±âÁØ)
UDP´Â Ŭ¶óÀÌ¾ðÆ®¸¶´Ù ÇÚµéÀÌ ÀÖ´Â °Íµµ ¾Æ´Ï°í
Ưº°È÷ ¿¬°á µÇ¾î ÀÖ´Â °Íµµ ¾Æ´Ï´Ï±î
¾Æ¿¹ óÀ½ºÎÅÍ ²÷±ä´Ù´Â °³³äÀÌ ¾ø´Â °Í °°Àº µ¥¿ä...
ÇÏÁö¸¸ ¾î·µç °ÔÀÓ¿¡¼´Â Á¢¼Ó Á¾·á¸¦ Ã¼Å©ÇØ¾ß µÇ°í,,
¶Ç ½ÇÁ¦·Î ½ºÅ¸¿¡¼´Â Alt + Tap¸¦ ´·¯¼ Æ÷Ä¿½º¸¦ ¿Å±â°Å³ª
¾Æ´Ï¸é ¾Æ¿¹ ½Ã½ºÅÛÀ» ²¨¹ö¸®¸é
°ð¹Ùµµ ȸéÀÌ ¾îµÎ¿öÁö¸é¼ âÀÌ ¶ß°í 4xÃʸ¦ ±â´Ù¸° ÈÄ
µå¶øÀ» ÇÒ ¼ö ÀÖ°Ô ÇÏÁÒ...
´Ù½Ã ¸»Çؼ ½ºÅ¸¿¡¼´Â UDP¸¦ ¾²Áö¸¸ °ð¹Ù·Î ¿¬°áÀÌ ²÷±ä °É ¾È´Ù´Â °ÅÀݾƿä.
¾î¶»°Ô ÇÏÁÒ??
³×¶± Ãʺ¸
È®½ÇÇÏÁø ¾Ê½À´Ï´Ù¸¸ ÁÖ±âÀûÀ¸·Î ¸Þ½ÃÁö¸¦ ¼·Î ÁÖ°í ¹ÞÀ¸¸é ¾Ë ¼ö ÀÖÁö
¾ÊÀ»±î¿ä?
¿¹¸¦µé¾î, A,B°¡ ´ëÀüÁßÀ϶§ ÁÖ±âÀûÀ¸·Î
A°¡ "³ª AÀε¥ »ì¾ÆÀÖ³ª?" ¶ó´Â°É º¸³»°í
Bµµ "³ª BÀε¥ »ì¾ÆÀÖ³ª?" ¶ó´Â°É º¸³»¸é,
ÁÖ±âÀûÀ¸·Î ÀÌ°É ¹Þ¾Æ¾ßÁö ¸ø¹ÞÀ¸¸é ÀÏÁ¤½Ã°£À» ±â´Ù¸®´Ù°¡
»ó´ë¹æÀ¸·ÎºÎÅÍ Á¢¼ÓÀÌ ²÷°å½À´Ï´Ù¶ó°í ¾Ë·ÁÁÖ¸é µÇÁö ¾ÊÀ»±î¿ä?
±¸Ã¼ÀûÀ¸·Î ±¸ÇöÇÏ·Á¸é Á¶±Ý´õ ¼¼¹ÐÇÏ°Ô ÇÒ¼öµµ ÀÖ°ÚÁö¸¸
´Ù¸¥ ¹æ¹ýÀÌ ¶Ç ÀÖÀ»·Á³ª?
¾ÆÀ̵ðºô·Á¾²´ÂÁã.
UDP ¿¡´Â "Á¢¼Ó" À̶ó´Â °úÁ¤ ÀÚü°¡ ¾ø½À´Ï´Ù.
µû¶ó¼ "Á¢¼ÓÁ¾·á" ¶ÇÇÑ ¾ø½À´Ï´Ù.
½ºÅ¸°¡ UDP Æ÷Æ®¸¦ Çϳª ¿¾ú´Ù¸é,
Ç÷¹ÀÌÁßÀÎ Ç÷¹À̾ ¾Æ´Ñ ´Ù¸¥ Ç÷¹À̾
¸ñÀûÁö ÁÖ¼Ò Àû¾î¼ ³¯·ÁÁÖ¸é °ÔÀÓ¿¡¼± ±× ¸Þ¼¼Áö ¹Þ°Ô µÇÁÒ.
Á¢¼ÓÁ¾·á°¡ ¾øÀ¸´Ï.. 󸮹æ¹ýÀº ´ÜÁö,
Option ÀÇ Network ºÎºÐ¿¡¼ ¼³Á¤µÈ Latency ÀÇ ½Ã°£¸¸Å
ÇѸíÀÇ Ç÷¹À̾î¶óµµ ¸Þ¼¼Áö°¡ µµÂø ¾ÈÇßÀ¸¸é
°ÔÀÓÀ» Àá½Ã ÁߴܽÃŵ´Ï´Ù.
Áߴܽð£ÀÌ ¸îÃÊ ÀÌ»ó ³Ñ¾î°¡¸é µð½º âÀÌ ¶ß°í..
À̶§ UDP±â¶§¹®¿¡ ¸Þ¼¼Áö°¡ ³¯¾Æ°¬À»¼öµµ ÀÖÀ¸´Ï,
±â´Ù¸®´Â µ¿¾È ÁÖ±âÀûÀ¸·Î ¸î¹øÂ° ÇÁ·¡ÀÓ ¸Þ¼¼Áö ¸ø¹Þ¾ÒÀ¸´Ï ´Ù½Ã º¸³»´Þ¶ó°í
¿äûÇϱâ´Â ÇÏÁÒ.
TCP¸¦ »ç¿ëÇØ¼ µ¥ÀÌÅÍ Àü¼Û½Ã Áß°£¿¡ ³×Æ®¿÷ÀÌ Á×À» °æ¿ì ÇÁ·Î±×·¥¿¡¼
ó¸®ÇÏÁö ¾Ê¾Æµµ ÀÚµ¿À¸·Î ÀçÀü¼ÛÇÏ°Ô µÇ³ª¿ä?
pingÀ» ¶§·Áº¸¸é Áß°£Áß°£ ÆÐŶÀÌ µµÂøÇÏÁö ¸øÇß´Ù´Â ¸Þ½ÃÁö¸¦ È®ÀÎ ÇÒ ¼ö
Àִµ¥¿ä.
Ȥ½Ã À̿Ͱ°ÀÌ reliableÇÑ TCP¶óµµ Áß°£¿¡ ÆÐŶ Çϳª°¡ ¾Æ¿¹ Àü¼ÛÀÌ µÇÁö
¾Ê´Â °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´ÂÁö..? ±Ã±ÝÇÕ´Ï´Ù. ±×·³..
°£´ÜÇÏ°Ô ¸»¾¸µå¸®ÁÒ.
¿ì¼± TCP¿¡¼´Â ÇϳªÀÇ segment¸¦ º¸³¾¶§ ¸¶´Ù timer¸¦ ÀÛµ¿½ÃÄѼ
time outÀÌ µÉ¶§±îÁö ACK°¡ ¿ÀÁö ¾Ê´Â ´Ù¸éÀº ´Ù½Ã ÀçÀü¼ÛÀ» ÇÏ°Ô µË´Ï´Ù.
´ÙÀ½¹ø¿¡´Â timerÀÇ ½Ã°£À» Á»´õ ±æ°Ô Àâ¾Æ¼ º¸³»±¸¿ä..
±×·¸´Ù°í °è¼Ó ¹«ÇÑ´ë·Î º¸³»Áö´Â ¾Ê°ÚÁÒ?
Á¦°¡ ½ÇÇèÇØ ºÃÀ»¶§´Â ¾î´ÀÁ¤µµ ½Ã°£ÀÌ Áö³ªµµ·Ï °è¼ÓÇØ¼ Àü¼Û ½ÇÆÐ¸¦ ÇϰÔ
µÈ´Ù¸éÀº ¾Ë¾Æ¼ ¿¬°áÀÌ ²÷¾î Áö´õ±º¿ä(winsock¿¡¼ default·Î setting µÇ¾î
ÀÖÀ» °æ¿ì 30ÃÊ Á¤µµ ÈÄ¿¡)..
²÷¾î Á³´Ù´Â ¸Þ½ÃÁö¸¦ application¿¡°Ô Àü´Þ ÇÒ °Ì´Ï´Ù.
Âü°í°¡ µÇ¼Ì±â¸¦...
--jadoo
10¹ÙÀÌÆ®¸¦ sendÇß´Ù°í ÇÒ¶§ ¸®ÅϰªÀÌ
WSAEWOULDBLOCK³ª¿Ô´Ù¸é 10¹ÙÀÌÆ® ¸ðµÎ¸¦ ÀçÀü¼ÛÇØ¾ßÇϴ°ǰ¡¿ä?
Áö±Ý²¯ ¾Æ¹«»ý°¢¾øÀÌ »ý°¢Çغ¸´Ï ÀÌ·¸°Ô ÇÏ¸é ¾ÈµÇ°Ú´Ù ½Í¾î¼.
ÇöÀç ºñµ¿±â À©¼ÓÀ» ¾²°í ÀÖ°í sendÇÏ¸é ¸®ÅϰªÀ¸·Î º¸³½ ¹ÙÀÌÆ®
°¡ ³ª¿À´Â°Å·Î ¾Æ´Âµ¥¿ä.
»ý°¢Çغ¸´Ï ÀÌ»óÇÑ°Ô ºñµ¿±â¼ÒÄÏÀε¥ ¹Ù·Î ¸î¹ÙÀÌÆ® º¸³Â´ÂÁö
¸®Åϵȴٴ°͵µ ±×·¸°í ºí·°µÇ¾ú´Ù¸é 10¹ÙÀÌÆ® Àü¼Û Àüü°¡ ºí·°
µÈ°ÇÁö ±× Áß ÀϺδ º¸³»°í ³ª¸ÓÁö ºÎºÐ¿¡ ´ëÇØ¼ ºí·°µÈ°ÇÁö...
´äº¯ ºÎʵ右´Ï´Ù.
ºñµ¿±â ¼ÒÄÏ¿¡¼ send()¸¦ ÇÏ´Ù ºí·ÏÅ·ÀÌ ¶á °æ¿ì º¸³»°íÀÚ ÇÑ ¸Þ½ÃÁö¸¦ º¸³»´ø
Áß¿¡ ºí·Ï °É·È´Ü ÀǹÌÀÔ´Ï´Ù. ÀϺδ º¸³»°í ÀϺδ ¸øº¸³Â´Ù´Â ¶æÀÌÁÒ.
send()¿¡¼ ¸®ÅÏµÈ °ªÀÌ º¸³½ ¹ÙÀÌÆ® ¼öÀÌ°í ±× ÀÌÇÏ´Â º¸³»Áö ¸øÇÑ °ÅÁÒ.
ÀÌ·± °æ¿ì´Â ³²Àº µ¥ÀÌÅ͸¦ Å¥¿¡ ³Ö¾î ³õ¾Ò´Ù°¡ FD_WRITE¸Þ½ÃÁö°¡ ¿Ã¶§±îÁö
Àü¼ÛÀ» ¹Ì·ç¾î µÖ¾ß ÇÕ´Ï´Ù.
ÇÁ·Î±×·¥Àº ÁøÇàµÇ°í ÄÚµå»óÀ¸·Î´Â ¸Þ½ÃÁö¸¦ º¸³»¾ß Çϴµ¥ ³×Æ®¿÷ ºí·ÏÅ·
»óȲÀ¸·Î ½ÇÁ¦ÀûÀ¸·Î´Â ¸Þ½ÃÁö¸¦ º¸³¾ ¼ö ¾ø´Â °æ¿ì°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ·²¶§¸¦
´ëºñÇØ¼ ¼ÒÄÏÀÇ Àü¼Û µ¥ÀÌÅÍ Å¥¸¦ ¸¸µé¾î ³õ´Â °Ì´Ï´Ù.
Å¥¿¡ ¼ø¼´ë·Î ½×¿©ÀÖ´Â µ¥ÀÌÅ͵éÀº ºí·ÏÅ· »óȲÀÌ Ç®·È´Ù´Â FD_WRITE ¸Þ½ÃÁö
°¡ ¼ö½ÅµÇ¸é ±×¶§ Àü¼ÛÇÏ¸é µÇÁÒ. ¹°·Ð Å¥¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ º¸³»´Ù°¡ ¶Ç ºí·ÏÅ·
ÀÌ ¶ã¼öµµ ÀÖÀ¸´Ï ±×¿¡ ´ëÇÑ ´ëºñµµ ÇØ¾ß ÇÕ´Ï´Ù.
´äº¯ °¨»çÇÕ´Ï´Ù.
±Ùµ¥ Á¦°¡ Áú¹®ÇÑ Àǵµ¿Í´Â ¾à°£ ¹þ¾î³ µí ÇÏ¿© ÀçÁú¹®ÇÕ´Ï´Ù.
¹°·Ð ¼ö½ÅÅ¥,¼Û½ÅÅ¥¸¦ ¸¸µé¾î¼ fd_write°¡ ¹ß»ýÇÏ¸é ´Ù½Ã º¸³»°í ÀÖ½À´Ï´Ù.
À½..±×·¯´Ï±î Á¦ Áú¹®À» ´Ù½Ã Ç®ÀÚ¸é..
À̰ŠÁ¦°¡ À߸øÂ§°ÇÁö ¸ð¸£°Ú´Âµ¥ send()ÇÔ¼öÀÇ ¸®ÅϰªÀÌ SOCKET_ERRORÀ϶§
WSALastError·Î ºí·°ÀÎÁö¸¦ ÆÇº°Çϰí ÀÖ½À´Ï´Ù.±×·¯´Ï±î send()ÀÇ ¸®ÅϰªÀÌ
0º¸´Ù Å©¸é WSALastError()À» ¾ÈÇÑ´Ü ¼Ò¸®°í....
À½.±×·¯´Ï±î ´Ù½Ã Ç®¸é ¸®ÅϰªÀÌ 0º¸´Ù Å« °æ¿ì´Â ¹®Á¦°¡ ¾È»ý°å´Ù°í °¡Á¤
ÇÑ´Ù´Â ¾ê±âÁÒ.ÀÏ´Ü Å¥¿¡¼ send()¿¡¼ ¸®ÅÏÇÑ ±æÀ̸¸Å¸¸ µ¥ÀÌŸ¸¦ »Ì¾Æ³»
°í fd_wirte°¡ ¹ß»ýÇßÀ»¶§ ³²Àº ºÎºÐÀ» º¸³À´Ï´Ù¸¸.
ºí·°»óÅÂÀÎÁö´Â 0º¸´Ù Ŭ¶© üũ¸¦ ¾ÈÇÑ´Ü ¾ê±âÀÔ´Ï´Ù.
Áö±Ý²¯ ·£ »óÅ¿¡¼ Å×½ºÆ®¸¦ Çß¾ú±â ¶§¹®¿¡ ¹®Á¦°¡ ÀüÇô ¾ø¾ú´Âµ¥ ¹®µæ
ÀÌ»óÇÑ »ý°¢ÀÌ µé¾î¼ ¸»ÀÔ´Ï´Ù.
send()¿¡ ³Ö¾îÁØ ¸Þ½ÃÁö ±æÀ̺¸´Ù ¸®ÅÏÇÑ ±æÀ̰¡ ÀÛ´Ù¸é ºí·°ÀÌ °É¸°°ÍÀ¸
·Î °£ÁÖÇØ¾ßÇϴ°ǰ¡¿ä?
´äº¯ ºÎʵ右´Ï´Ù.
ÇÁ·Î±×·¥¿¡¼ 100¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ º¸³»±â·Î ÇØ¼ send(100)À» Çß´Ù°í Çϸé,
ÇѹøÀÇ send()ÇÔ¼ö·Î 100¹ÙÀÌÆ®¸¦ ¸ðµÎ º¸³¾ ¼ö ÀÖ´Ù´Â º¸ÀåÀÌ ¾ø±â ¶§¹®¿¡
100¹ÙÀÌÆ®¸¦ ´Ù º¸³¾¶§±îÁö send() ÇÔ¼ö¸¦ ÄÝÇÏ¸é¼ ·çÇÁ¸¦ µ½´Ï´Ù. ±×·¯´Ù°¡
¹Ýȯ°ªÀÌ ºí·ÏÀÌ¸é ºí·ÏÅ·ÀÌ °É¸°°ÍÀ̰í, ³¡±îÁö ·çÇÁ¸¦ ´Ù µ¹¾Æ¼ ¸ðµç µ¥ÀÌÅ͸¦
´Ù º¸³»¸ç ¼º°øÇÑ °ÍÀÌÁÒ.
´ÙÀ½ Äڵ带 º¸½Ã¸é Âü°í°¡ µÉ °Ì´Ï´Ù.
¸Þ½ÃÁö´Â cData[] ¹è¿ ¾È¿¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù.
±âŸ Å¥ ÀúÀå °ü·Ã ÇÔ¼ö´Â Á¦°¡ ±¸ÇöÇÑ °ÍÀ̹ǷΠ½Å°æ¾²Áö ¾ÊÀ¸¼Åµµ µË´Ï´Ù.
¹°·Ð ¸ðµç µ¥ÀÌÅÍÀÇ Àü¼ÛÀ» º¸ÀåÇϱâ À§Çؼ´Â Àü¼Û ¸Þ½ÃÁö Å¥¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß¸¸
ÇÕ´Ï´Ù.
iOutLen = 0;
while (iOutLen < iSize) {
iRet = send(m_Sock, (cData + iOutLen), iSize - iOutLen, 0);
if (iRet == SOCKET_ERROR) {
WSAErr = WSAGetLastError();
if (WSAErr != WSAEWOULDBLOCK) {
// ¼ÒÄÏ¿¡ ¿¡·¯°¡ ¹ß»ýÇß´Ù.
// º¹±¸°¡ ºÒ°¡´ÉÇϹǷΠ¿¬°áÀ» ²÷¾î¾ß ÇÑ´Ù.
m_WSAErr = WSAErr;
return DEF_XSOCKEVENT_SOCKETERROR;
}
else {
// ºí·°»óÅÂÀÌ¸é ´õÀÌ»ó º¸³¾ ¼ö ¾øÀ¸¹Ç·Î
// ³²¾ÆÀÖ´Â µ¥ÀÌÅ͸¦ Àü¼Û Å¥¿¡ µî·ÏÇÏ°í ¸®ÅÏ
if (bSaveFlag == TRUE) {
iRet = _iRegisterUnsentData((cData +
iOutLen), (iSize - iOutLen));
switch (iRet) {
case -1:
// ÇÒ´çÇÒ ¸Þ¸ð¸®°¡ ¾ø´Ù.
// À̰æ¿ì´Â º¹±¸ÇÒ ¹æ¹ýÀÌ ¾ø´Ù.
return DEF_XSOCKEVENT_CRITICALERROR;
break;
case 0:
// Å¥°¡ °¡µæÃ¡´Ù. ÀÌ ¼ÒÄÏ
// Ŭ·¡½º´Â »èÁ¦µÇ¾î¾ß¸¸ ÇÑ´Ù.
return DEF_XSOCKEVENT_QUENEFULL;
break;
case 1:
// Á¤»óÀûÀ¸·Î µ¥ÀÌÅ͸¦ µî·ÏÇß´Ù.
break;
}
}
return DEF_XSOCKEVENT_BLOCK;
}
} else iOutLen += iRet;
}
Âü°í°¡ µÇ¸é ÁÁ°Ú±º¿ä
Á¦°¡ SOCKET À» ã¾Æ ºÃ´Âµ¥
unsigned int ´õ±º¿ä..
±×·³ ½ÇÁúÀûÀ¸·Î´Â ÃÖ°í 65536¸íÀ» ¹ÞÀ»¼ö Àִٴ°̴ϱî?
±×·¸´Ù¸é.. ¼öÁ¤ÀÌ ÀÖ¾î¾ß ÇÒµí½Í³×¿ä.
Ã¥Á» ÃßÃµÇØ ÁÖ½ÃÁö.. ¾ÆÁ÷ ¾Ïµµ ¾Ê¾²¼Ì³×¿ä.
±×°ÅÇϰí À̰ÅÇÏ°í ´äº¯ ¹Ù¶ø´Ï´Ù.
> ºñµ¿±â ¼ÒÄÏ¿¡¼ send()¸¦ ÇÏ´Ù ºí·ÏÅ·ÀÌ ¶á °æ¿ì º¸³»°íÀÚ ÇÑ ¸Þ½ÃÁö¸¦ º¸³»´ø
> Áß¿¡ ºí·Ï °É·È´Ü ÀǹÌÀÔ´Ï´Ù. ÀϺδ º¸³»°í ÀϺδ ¸øº¸³Â´Ù´Â ¶æÀÌÁÒ.
> send()¿¡¼ ¸®ÅÏµÈ °ªÀÌ º¸³½ ¹ÙÀÌÆ® ¼öÀÌ°í ±× ÀÌÇÏ´Â º¸³»Áö ¸øÇÑ °ÅÁÒ.
ºñµ¿±â ¼ÒÄÏ¿¡¼ send() ºí·¯Å· »óȲÀ϶§´Â
SOCKET_ERROR °¡ ¸®ÅϵÇÁö ¾Ê³ª¿ä..?
- Testors
¸¸¾à¿¡ send()ÇÔ¼ö¿¡ Çѹø¿¡ 100kbÁ¤µµ¸¦ ³Ö¾ú´Ù°í Çϸé...
ÀÌ Á¤µµ¸é ÀÏ´Ü Ã¹¹ø¿¡ ºí·°ÀÌ °É¸±°Å °°Àºµ¥¿ä.ÀÌ·¸°Ô °¡Á¤ÇßÀ»¶§
¾ó¸¶¸¸ÅÀº º¸³»°í ¾ó¸¶¸¸ÅÀº ¸øº¸³»Áö ¾Ê°Ú½À´Ï±î?
±×·¸´Ù¸é send()ÀÇ ¸®ÅϰªÀº SOCKET_ERRORÀԴϱî? ¾Æ´Ï¸é º¸³½ ¹ÙÀÌÆ® ¼öÀԴϱî?
Áö±Ý²¯ Áú¹®ÇÑ°Ç ¹Ù·Î ÀÌ°É ¹¯´Â°ÍÀ̾ú½À´Ï´Ù.
1. 100¹ÙÀÌÆ® º¸³»°í ³ª¸ÓÁö 99900¹ÙÀÌÆ®¸¦ º¸³»Áö ¸øÇß´Ù¸é ÀÏ´Ü 100ÀÌ
¸®ÅÏµÇ°í ´ÙÀ½¹ø send()ÇÒ¶§(¼ÒÄÏÀÌ fd_write »óŰ¡ µÇ±â Àü¿¡) SOCKET_ERROR
°¡ ¹ß»ýÇÑ´Ù.
2. ù¹ø¿¡ SOCKET_ERRORÀÌ ¸®ÅϵȴÙ.
Áß ÇϳªÀÏ°Í °°Àºµ¥..Àü ÀüÀÚÂÊÀ¸·Î »ý°¢Çϰí ÀÖ¾ú´Âµ¥ ¾îÂî µÇ´Â°ÍÀÎÁö
Á¤È®È÷ ´äº¯Á»..
±×¸®°í ºí·°µÇ´Â °æ¿ì³ª Á¢¼ÓÀÌ ²÷¾îÁø °æ¿ì ¿Ü¿¡µµ send()ÇÔ¼ö¿¡ ³Ö¾î
ÁØ ±æÀ̺¸´Ù ÀûÀº °ªÀÌ(º¸³½ ¹ÙÀÌÆ®)ÀÌ ¸®Åϵɼö ÀÖ½À´Ï±î?
ÂÁ..À̰Ŷ«¿¡ µý°É ¸øÇϰí Àֳ׿ä.½Å°æ ¾²¿©¼...
send() ½Ã¿¡ º¸³½ ¹ÙÀÌÆ® ¼ö°¡ ¸®Å쵃 ¼öµµ ÀÖ°í °ð¹Ù·Î SOCKET_ERROR¸¦ ¹ÞÀ» ¼öµµ
ÀÖ½À´Ï´Ù. ±×°Ç ³×Æ®¿÷ »óÅ¿¡ µû¶ó ´Þ¶óÁö´Ï±î¿ä.
100KB¸¦ send() Çß´Ù¸é 50KB¸¸ º¸³Â´Ù°í ¸®ÅϰªÀÌ ¿Ã¼öµµ ÀÖ°í, º¸³»ÀÚ ¸¶ÀÚ
SOCKET_ERROR¸¦ ¹Þ¾Ò´Ù¸é ¿¡·¯ÀÇ Á¾·ù°¡ BlockÀÎÁö¸¦ ÆÇ´ÜÇÑ ÈÄ, Block ÀÌ¿ÜÀÇ ¿¡·¯
¶ó¸é ¼ÒÄÏÀ» ²÷´Â ¼ö ¹Û¿¡ ¾øÀ¸¸ç, BlockÀ̸é Àü¼Û Å¥¿¡ ³Ö¾î ¹ö¸®°í ¸®ÅÏÇϸé
µÇÁÒ.
¸¸¾à 50KB¸¸ º¸³Â´Ù°í ¸®ÅϰªÀ» ¹ÞÀº ´ÙÀ½ °ð¹Ù·Î ³ª¸ÓÁö µ¥ÀÌÅ͸¦ send() ÇÑ´Ù°í
ÇßÀ»¶§ ³²Àº 50KB µ¥ÀÌÅ͸¦ ´Ù º¸³¾ ¼öµµ ÀÖ°í 30KB¸¸ º¸³Â´Ù°í ÇÒ ¼öµµ ÀÖ°í
±×´ë·Î SOCKET_ERROR°¡ ¶ã ¼öµµ ÀÖ°ÚÁÒ. ±×·± ÀÌÀ¯·Î ¾Æ·¡ Äڵ忡 send() ºÎºÐÀ»
·çÇÁ·Î µµ´Â °ÍÀÔ´Ï´Ù. ·çÇÁ¸¦ µ¹¸é¼ µ¥ÀÌÅ͸¦ ¸ðµÎ ´Ù º¸³Â´Ù¸é ÁÁÀº °ÍÀ̰í
ºí·ÏÀÌ °É·È´Ù¸é Àü¼Û Å¥¿¡ ³ÖÀ¸¸é µÇ´Â °Ì´Ï´Ù.
nLength = m_pSQueue->View(data, nQueLength);
nLength = send( m_Socket, data, nLength,MSG_DONTROUTE );
if( SOCKET_ERROR == nLength )
{
int n=WSAGetLastError();
// ¿¡·¯Ã³¸®ÈÄ ¸®ÅÏ.
// WSAWOLDBLOCK(?) ÀÌ ¾Æ´Ï¸é º¸Åë ¼ÒÄÏÀ» ´Ý¾Æ¹ö¸³´Ï´Ù.
}
else{
// nLength(º¸³½¹ÙÀÌÆ®¼ö) ¸¸Å ¹öÆÛ¸¦ ºñ¿ó´Ï´Ù..
m_pSQueue->Read(data, nLength);
}
¾²°íÀÖ´Â ÄÚµåÁß ÀϺÎÀÔ´Ï´Ù.. Âü°íÇϼ¼¿ä..
- Testors
unsigned int ¶ó¸é 65536 ÀÌ ¾Æ´Ï¶ó 4294967296 ÀÏÅÙµ¥¿ä
ÇÏÁö¸¸ ½ÇÀûÀ¸·Î 65536¼ÒÄÏ À̶ó°í º¸¼Åµµ ¹«¹æÇÕ´Ï´Ù.
±×¸®°í ÇÑ ¸Ó½Å¿¡¼ 65536 ¼ÒÄÏÀ» Çڵ鸵 ÇÏ´Â°Í ÀÚü°¡
ºñÈ¿À²ÀûÀÌ°í ¹«¸ðÇÑ Áþ ¾Æ´Ò±î¿ä.
ºÐ»ê󸮿¡ °ü½ÉÀ» °¡Á®º¸½Ê½Ã¿©.-_-;
-ºñ¿±
WSAStartUp À» call ÇÒ¶§ WSADATA ¶ó´Â struct¸¦ ¸Å°³º¯¼ö·Î ³Ñ°ÜÁÖÁö¿ä?
WSAStartUp ÀÌ ½ÇÇàµÈ µÚ¿¡ WSADATA¸¦ ¿¾îº¸¸é WSADATA.iMaxSockets ¶ó´Â
¸â¹ö¿¡ ÃÖ´ë ¼ÒĹ °¹¼ö°¡ µé¾îÀÖ½À´Ï´Ù. ÀÌ ¿Ü¿¡µµ À©¼Ó ¹öÁ¯, ÃÖ´ë ÆÐŶũ±â,
±âŸµîµîÀÇ Á¤º¸°¡ ³Ñ¾î¿É´Ï´Ù.
Âü°í°¡ µÉ·±Áö¿ä?
fd_read°¡ ¹ß»ýÇßÀ»¶§ tcp³»ºÎ Å¥¿¡ ¸î¹ÙÀÌÆ®°¡ ½×¿©ÀÖ´ÂÁö,
Áï recv()ÇÒ¶§ Çѹø¿¡ ¸î ¹ÙÀÌÆ® ¸®µå ÇÒ¼ö ÀÖ´ÂÁö ¹ÙÀÌÆ® ¼ö¸¦
¾Ë·Á¸é ¾î¶»°Ô ÇØ¾ßÇÒ±î¿ä? fd_read¹ß»ýÇÒ¶§¸¶´Ù 1¹ÙÀÌÆ®¾¿ Àоú
´õ´Ï lanȯ°æ¿¡¼± ¿·¿¡¼ ¿Õâ º¸³»¸é ³¸®°¡ ³ª´õ±º¿ä.
fd_read°¡ ²÷ÀÓ¾øÀÌ ¹ß»ýÇØ¼ cpu¸¦ µ¶Á¡ÇÏ´Â °á°ú°¡..
´äº¯ ºÎʵ右´Ï´Ù.
À̰ÍÀº µÎ ¼ÒÄÏÀÇ Åë½Å ±Ô°ÝÀ» ÇÁ·Î±×·¡¸Ó°¡ ¾î¶»°Ô Á¤Çߴ°¡¿¡ ´Þ¸° ¹®Á¦À̱⵵
ÇÑ °Í °°½À´Ï´Ù. »ó´ëÆí¿¡¼ 50¹ÙÀÌÆ®¸¸ º¸³Â´Ù¸é, recv(Socket, pBuffer, 100)
ÇÏ¸é ¸®ÅϰªÀÌ 50ÀÌ ¹ÝȯµÉ °Ì´Ï´Ù. ±×´ÙÀ½¿£ ¾Æ¹«¸® recv()¸¦ µ¹·Áµµ µ¥ÀÌÅͰ¡
¾È¿À°ÚÁÒ.
Áï ¹®Á¦´Â recv() ÇÒ ´ç½Ã¿¡ ¸î¹ÙÀÌÆ®¸¦ ¹ÞÀ» °ÍÀΰ¡¸¦ ¾î¶»°Ô ÁöÁ¤ÇÒ °ÍÀΰ¡
Àε¥, À̰ÍÀº ÀúÀÇ °æ¿ì, ¸Þ½ÃÁöÀÇ Çü½ÄÀ» óÀ½ ¸î¹ÙÀÌÆ®´Â ¾ÕÀ¸·Î Àü¼ÛµÉ µ¥ÀÌÅÍ
Å©±â¸¦ °íÁ¤ÀûÀ¸·Î º¸³»ÁÜÀ¸·Î½á ÇØ°áÇß½À´Ï´Ù.
¿¹¸¦ µéÀÚ¸é óÀ½ ¼ö½ÅµÇ´Â 4¹ÙÀÌÆ®´Â ÀÌÈÄ·Î Àü¼ÛÇÒ µ¥ÀÌÅÍÀÇ »çÀÌÁîÀÓÀ» ¾à¼ÓÇÏ
¸é óÀ½¿¡ recv(socket, pBuffer, 4) ¸¦ ÇØ¼ »çÀÌÁ Àоî dwMsgSize¿¡ ÀúÀåÇß´Ù
ÇÑ´Ù¸é ±×´ÙÀ½ recv(socket, pBuffer, dwMsgSize)ÀÇ ÇüÅ·Π¸Þ½ÃÁö¸¦ ¼ö½ÅÇÕ´Ï´Ù.
¹°·Ð dwMsgSize¸¸ÅÀÇ µ¥ÀÌÅͰ¡ ¼ö½Å ¾ÈµÉ¼öµµ ÀÖ½À´Ï´Ù. ±×·²¶§´Â ¼ö½ÅµÈ µ¥ÀÌÅÍ
ÀÇ »çÀÌÁî ¸¸ÅÀ» dwMsgSize¿¡¼ »« ´ÙÀ½ ´ÙÀ½ FD_READ¸Þ½ÃÁö°¡ ¼ö½ÅµÉ ¶§ ±× »çÀÌ
Áî·Î ¼ö½ÅÇÏ¸é µÇ°ÚÁÒ.
¼ÒÄÏÀ¸·Î º¸³»°Å³ª ¼ö½ÅµÇ´Â ¸ðµç ¸Þ½ÃÁö´Â Âɰ³Áö°Å³ª ÇÕÃÄÁú ¼ö ÀÖ´Ù´Â Á¡À»
À¯³äÇÏ¼Å¾ß °ÚÁÒ. ¶Ç FD_READ ¸Þ½ÃÁö°¡ ¿ÔÀ»¶§ recv()¸¦ Çѹø¸¸ ½ÇÇàÇØ¾ß Çϸç
recv()¸¦ µÎ¹øÀÌ»ó ½ÇÇàÇÏ¸é °æÇè»ó ¸Þ½ÃÁö°¡ ²¿ÀÌ´õ±º¿ä. À̰͵µ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù.
¾È³çÇϼ¼¿ä?
±¤ÇöÀÓÀÇ ´äº¯ÀÇ ¿äÁö´Â recv()ÇÒ ¶§ »ó´ë¹æÀÌ º¸³½ ¸Þ½ÃÁö¸¦ ¸ðµÎ ¹ÞÁö ¾Ê°í
ºÎºÐ ºÎºÐ ¹ÞÀ» ¼öµµ ÀÖ´Ù´Â °ÍÀ̶ó°í »ý°¢Çß½À´Ï´Ù.
±×·¡¼ ¹ÞÀº µ¥ÀÌÅÍÀÇ ¾çÀ» ÀúÀåÇÑ´Ù°í Çϼ̽À´Ï´Ù.
±×·¯¸é ¸»¾¸ÇϽг»¿ëµéÀÌ tcp¿Í udp ¸ðµÎ¿¡ Àû¿ëµÇ´Â °ÍÀΰ¡¿ä?
±×·±µ¥ äÆÃ Ŭ¶óÀÌ¾ðÆ® ¼¹ö ¼Ò½º¸¦ º¸¸é ±¤Çö´ÔÀÌ ¸»¾¸ÇϽг»¿ë¾øÀÌ
´ÜÁö ¹öÆÛÀÇ Å©±â¸¸Å recv()ÇØ ÁÖ´õ±º¿ä.
recv( m_s , msg, sizeof(msg));
ÀÌ·¸°Ô ÇÒ °æ¿ì ±¤Çö´ÔÀÇ ¸»¾¸´ë·Î¶ó¸é äÆÃ¹®ÀåÀÌ ºÎºÐ ºÎºÐ msg¿¡ ÀúÀåµÇ´Â
¹®Á¦°¡ ÀϾ °ÍÀ̶ó°í ¿¹»óµË´Ï´Ù. Á¦ »ý°¢ÀÌ ¸Â³ª¿ä?
ÇÑÆí tcpÀÇ °æ¿ì¿¡´Â ÁÖ°í ¹Þ´Â µ¥ÀÌÅÍÀÇ ³»¿ëÀ» º¸ÀåÇÑ´Ù°í Çߴµ¥, ±×·¸´Ù¸é
ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´Â ÁÖ°í ¹Þ´Â µ¥ÀÌÅÍÀÇ ¾ç¿¡´Â °ü½ÉÀ» ŠZ ¾Ê°í ÃæºÐÇÑ ¹öÆÛ¸¸
Á¦°øÇÏ¸é µÇÁö¾Ê³ª¿ä?
¶óÀÎÆíÁý±â·Î ÇÏ´Ï ¹ö¹÷°Å¸®³×¿ä, ÀÌÁ¦±îÁö Àб⸸ ÇÏ´Ù°¡ óÀ½À¸·Î Áú¹®À»
¿Ã¸³´Ï´Ù.
Á¦ÀÛÇÏ½Ã¸é¼ °Ô½ÃÆÇ¿¡ ±Ûµµ ¿Ã¸®½Ã´Â ºÐµé ´ë´ÜÇÏ½Å°Í °°¾Æ¿ä !!!
¾È³çÇϼ¼¿ä? ·¹ÀÌ¿ÊÀÔ´Ï´Ù.
±»ÀÌ ¼ÒÄÏ¿¡ ¾ó¸¶°¡ µé¾î¿Ô´ÂÁö ¾Æ½Ã°í ½Í´Ù¸é, Àܾ×Á¶È¸¸¦ ÇØ¾ß °ÚÁÒ.
À¯´Ð½º¶ó¸é ioctl(fd,FIONREAD,&size); ÇÏ½Ã¸é µÇ°Ú°í,
À©µµ¿ì¶ó¸é ioctlsocket(socket,FIONREAD,&size); ÇϽøé
ÇöÀç ¼ÒÄÏ¿¡ µé¾î¿Â µ¥ÀÌŸÀÇ Å©±â¸¦ ¾Ë ¼ö ÀÖÀ» °Ì´Ï´Ù.
(¿¹Àü¿¡µµ ÀÌ ±Û ½èÁö ½ÍÀºµ¥.. - -; )
´Ü ÀϹÝÀûÀÎ °æ¿ì ¸Þ½ÃÁö¸¦ ¹Þ¾Ò´Ù¸é ¼ÒÄÏ¿¡´Â ¹«Á¶°Ç µ¥ÀÌŸ°¡ ÀÖ´Â
°Å°í, ±×³É ¹öÆÛÀÇ ³²Àº ¿ë·®¸¸Å ´Ù Àд °Ô È¿À²ÀÌ ÈξÀ ÁÁÀ» °Ì´Ï´Ù.
±¦È÷ ¾Ë¾Æ¼ ÁÁÀ» °Ô ¾ø´Ù´Â °ÅÁÒ. (¹öÆÛ°¡ À۾Ƽ resize ÇØ¾ß ÇÑ´Ù¸é
¶Ç ¸ð¸£°Ú½À´Ï´Ù..)
=
¾Æ·¡ ±ÛµéÀ» º¸´Ï ´Ùµé ¸Þ½ÃÁö ±â¹Ý ÇÔ¼öµéÀ» ¾²½Ã´õ±º¿ä.
±Ùµ¥ À¢Áö Àü BSD ½ºÅ¸ÀÏ¿¡ Àͼ÷ÇØ¼¸®.. ¾Ïư À©µµ¿ìÀÇ
ioctlsocket () ¿¡ ´ëÀÀµÇ´Â ´Ù¸¥ ¸Þ½ÃÁöÂÊÀÇÇÔ¼ö°¡ ÀÖÀ»
°Íµµ °°±º¿ä..
==
±×·³ ¼ö°íÇϼ¼¿ë...
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
¿ì¼± Á¦°¡ ¾²´Â ¹æ¹ýÀ» °£´ÜÈ÷ ¸»¾¸µå¸®ÁÒ.. Âü°í°¡ µÇ½Ã±æ..
Á¦°¡ ¾²´Â ¹æ¹ýÀº ±¤Çö´ÔÀÌ ¾²½Ã´Â ¹æ¹ý°ú ¶È°°½À´Ï´Ù.
1148ÀÇ Áú¹®¿¡ ´ëÇÑ ´äÀÏ ¼ö°¡ Àְڳ׿ä.
¿ì¼± °¢ Ŭ¶óÀÌ¾ðÆ®¸¶´Ù ¼¹ö¿¡´Â ÇϳªÀÇ Å¬¶ó½º°¡ ÀÖ°í, ±× Ŭ¶ó½º¸¶´Ù ±× ´ã´ç
Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ ¹öÆÛ¸¦ µÎÁÒ, ±× ´ÙÀ½¿¡ fd_read¸Þ½ÃÁö°¡ ¿Ã¶§´Â ¹«Á¶°Ç ´Ù
ÀÐÀ¸ ½Ã¸é µË´Ï´Ù. ±×·¯¸é ´ÙÀ½°ú °°Àº 2°¡Áö ¹®Á¦Á¡ÀÌ ¹ß»ý ÇÒ ¼ö ÀÖ°ÚÁÒ?
1. msg°¡ ©·Á¼ ¿À´Â °æ¿ì.
±¤Çö´ÔÀÌ Çϼ̴ø °Í°ú ºñ½ÁÇÏ°Ô ÀÏ´ÜÀº Á¤ÇØÁø ±Ô°ÝÀÇ
header¸¦(4¹ÙÀÌÆ®)º¸°í ´ÙÀ½¿¡ µé¾î¿Ô¾î¾ß ÇÒ µ¥ÀÌŸÀÇ ¾çÀ» ¾Ë¾Æ³½ÈÄ ½ÇÁ¦
µé¾î¿Â µ¥ÀÌÅÍÀÇ ¾çÀÇ Å©±â¿Í ºñ±³Çغ¸°í ½ÇÁ¦ µé¾î¿Â µ¥ÀÌÅÍÀÇ ¾çÀÌ ÀûÀº °æ¿ì´Â
Àоú´ø µ¥ÀÌÅ͸¦ ó¸®ÇÏÁö ¾Ê°í ±× ¹öÆÛ¿¡ ±×³É µÎ°í ´ÙÀ½¿¡ ´Ù½Ã fd-read°¡ ¹ß»ý
ÇßÀ» ¶§ ÀÏ´ÜÀº ´Ù Àаí (Ȥ½Ã ´Ù¸¥ msgÀÎÁö Çѹø Ã¼Å©ÇØ ºÁ¾ß °ÚÁÒ?) ºÎÁ·Çß´ø
¸¸ÅÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î¼ ¿¹Àü¿¡ ÀÐ¾î ³õ¾Ò´ø ¹öÆÛ¿¡ append½ÃÄѼ ±×¿¡ ÇÕ´çÇÑ
󸮸¦ ÇØÁÖ¾úÁÒ. Ȥ½Ã »õ·Î ÀÐ¾î µéÀÎ ¸Þ½ÃÁö°¡ ºÎÁ·Çß´ø µ¥ÀÌÅÍÀÇ ¾çº¸´Ù ´õ
Å« °æ¿ì¿¡´Â 2¹øÀÌ °æ¿ì¿Í µ¿½Ã¿¡ »ý°¢ ÇÏ½Ã¸é µÉ°Ì´Ï´Ù.
2. msg¿¡ ´Ù¸¥ msg°¡ µÚ¿¡ ºÙ¾î¼ µé¾î ¿À´Â °æ¿ì.
À§¿¡¼ º»¹Ù¿Í °°ÀÌ ÀÏ´ÜÀº ´Ù ÀÐ¾î ³õ°í Header¸¦ º¸°í ¿Ô¾î¾ß ÇÒ µ¥ÀÌÅÍÀÇ
¾çÀ» üũÇÑ ÈÄ¿¡ ´õ ¸¹ÀÌ ¿Â°æ¿ì¿¡´Â ±× ¹öÆÛ¿¡´Â ÇöÀç ÇÊ¿äÇÑ µ¥ÀÌÅ͸¸ ³²°Ü
³õ°í ´ÙÀ½ Header¸¦ Ã¼Å©ÇØ º»ÈÄ ¶Ç ÇÊ¿äÇÑ ¸¸ÅÀÇ ¾çÀÌ ÇѲ¨¹ø¿¡ °°ÀÌ µé¾î ¿Ô
´ÂÁö¸¦ È®ÀÎÇØ ºÁ¾ß°ÚÁÒ. ±×·¡¼ ¿ÏÀüÈ÷ µé¾î ¿Ô´Ù¸éÀº ±× ¹öÆÛ¿¡´Â 2°³ÀÇ
msg°¡ µé¾î ÀÖ´Â ¼ÀÀÌ µÇ°ÚÁÒ. Ȥ½Ã ¶Ç, ©·Á¼ ¿ÔÀ»¼öµµ ÀÖÀ¸´Ï ±× °æ¿ì´Â 1¹øÀÇ
°æ¿ì·Î ÇØ°á ÇÏ½Ã¸é µÇ°ÚÁÒ?
¸»ÀÌ ³Ê¹« º¹ÀâÇØ Á³³×¿ä. Àǵµ´ë·Î Á¦´ë·Î ¼³¸íµµ ¾ÈµÈ°Í °°±¸¿ä.
±×¸®°í 1150´ÔÀÇ ¸»¾¸´ë·Î ¹öÆÛ¿¡ µé¾î¿Â µ¥ÀÌÅ͸¦ ¹Ì¸® ¾ó¸¶°¡ µé¾î ¿Ô´ÂÁö
Ã¼Å©ÇØ º¼¼ö ÀÖÁö¸¸ ±× ÇÔ¼öµéÀº ¾²Áö ¾Ê´Â °ÍÀÌ ÁÁ´Ù°í ÇÕ´Ï´Ù.
(windows socket programming ÀÇ Ã¥¿¡ ÀÇÇϸé) performance¶§¹®ÀÎÁö, bug°¡ ÀÖ´Ù
´ø°¡ ÇØ¼ °¡±ÞÀû ÀÌ ÇÔ¼ö¸¦ ¾²Áö ¸»¶ó°í ³ª¿Ô´õ±º¿ä.
¾î¶°Ç À§¿¡¼ ¸»¾¸µå¸° ¹æ¹ý´ë·Î ÇØ³õ°í, client¿¡¼ ¼ö¾øÀÌ ¸¹Àº msg¸¦
©¶ó¼µµ º¸³»º¸°í, ¾û¶×ÇÑ µ¥ÀÌÅ͸¦ µÚ¿¡ ºÙ¿©¼µµ º¸³»º¸°í, ¶Ç µÎ°¡Áö ¸ðµÎÀÇ
°æ¿ì¸¦ º¸³» ºÃÀ»¶§, ¾Æ¹« ¹®Á¦ ¾øÀÌ Àß ¼öÇàÀÌ µÇ´õ±º¿ä.
±×¸®°í Header°¡ À߸øµÈ°æ¿ì¿¡ ´ëºñÇØ¼ Á¤ÇØÁø HeaderÀÌ ¿ÜÀÇ °Í ÀÌ ¿Â°æ¿ì¿¡´Â
1¹ÙÀÌÆ®¾¿ ÀÐ¾î¼ ¹ö¸®¸é¼ ´ÙÀ½ ¹ÙÀÌÆ®¸¦ Àоú½À´Ï´Ù.
> ±×·¡¼ ¹ÞÀº µ¥ÀÌÅÍÀÇ ¾çÀ» ÀúÀåÇÑ´Ù°í Çϼ̽À´Ï´Ù.
> ±×·¯¸é ¸»¾¸ÇϽг»¿ëµéÀÌ tcp¿Í udp ¸ðµÎ¿¡ Àû¿ëµÇ´Â °ÍÀΰ¡¿ä?
TCP ¿¡¸¸ Àû¿ëµË´Ï´Ù. UDP´Â µ¥ÀÌÅͱ׷¥ ´ÜÀ§ÀÇ Àü¼ÛÀ¸·Î Àü¼ÛÇÑ ºí·°ÀÌ
Âɰ³Áö°Å³ª ÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å Å« µ¥ÀÌÅ͸¦ º¸³»·Á ½ÃµµÇÏ¸é ¹«½ÃµË´Ï´Ù.
> recv( m_s , msg, sizeof(msg));
> ÀÌ·¸°Ô ÇÒ °æ¿ì ±¤Çö´ÔÀÇ ¸»¾¸´ë·Î¶ó¸é äÆÃ¹®ÀåÀÌ ºÎºÐ ºÎºÐ msg¿¡ ÀúÀåµÇ´Â
> ¹®Á¦°¡ ÀϾ °ÍÀ̶ó°í ¿¹»óµË´Ï´Ù. Á¦ »ý°¢ÀÌ ¸Â³ª¿ä?
TCP Àϰæ¿ì ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.
> ÇÑÆí tcpÀÇ °æ¿ì¿¡´Â ÁÖ°í ¹Þ´Â µ¥ÀÌÅÍÀÇ ³»¿ëÀ» º¸ÀåÇÑ´Ù°í Çߴµ¥, ±×·¸´Ù¸é
> ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´Â ÁÖ°í ¹Þ´Â µ¥ÀÌÅÍÀÇ ¾ç¿¡´Â °ü½ÉÀ» ŠZ ¾Ê°í ÃæºÐÇÑ ¹öÆÛ¸¸
> Á¦°øÇÏ¸é µÇÁö¾Ê³ª¿ä?
¸Â½À´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼´Â ÃæºÐÇÑ ¹öÆÛ¸¸ ÁغñÇÏ¸é µË´Ï´Ù.
¾È³çÇϼ¼¿ä ·¹ÀÌ¿ÊÀÔ´Ï´ç...
Èì. ÀúÈñ´Â Çì´õ°¡ Ʋ¸®¸é ±×³É Â¥¸¨´Ï´Ù.
ȣȪ.. ´ÙºÐÈ÷ Á¤Ã¥ÀûÀÎ ¹®Á¦À̱ä ÇÏÁö¸¸..
Áï, ¹öÆÛ¿¡ ½×¿©ÀÖ´Â µ¥ÀÌŸ´Â ¸ðµÎ ¿Ç´Ù..¶ó´Â °¡Á¤ ÇÏ¿¡¼,
ÀÌ»óÇÑ µ¥ÀÌŸ°¡ ¼¯¿© ÀÖÀ» °æ¿ì¶ó¸é, ·Î±×ÇÑ ÈÄ Á¢¼ÓÀ»
Á¾·áÇÕ´Ï´Ù. .... . Invalid Protocol.. À̶ó°í Çϸ鼿ë.. :)
¾Æ¹«¸® »ý°¢Çصµ Çì´õ°¡ À߸øµÇ¾ú´Ù´Â ¸»Àº cracking ÀÎ °æ¿ì¿Ü¿¡´Â
¾ø´õ±º¿ä. (ÇÁ·ÎÅäÄÝÀÌ ¿Ïº®ÇÒ °æ¿ì - -; )
==
±×·¯³ª, ¿©ÀüÈ÷ °ÆÁ¤µÇ´Â °ÍÀº È£½ºÆ®°¡ ¶Õ¸®´Â °Å¶û,
DOS °ø°ÝÀÌÁö¿ä.. Èæ.. È£½ºÆ® ¶Õ¸®´Â °Å¾ß ¾î° º¸¾ÈÀ»
Àß ÇÏ¸é µÉ µíµµ ÇÏÁö¸¸.. DOS´Â ¾î¶»°Ô ¸·Áö¿ä.. - -;
==
Èì.. ±ÛÀÇ ½ÃÀÛ°ú ³¡ÀÌ ´Ù¸£±º¿ä. ÄÊ.. Á˼Û..
DOS°ø°ÝÀÌ ¾î¶²°Ç°¡¿ä?
À½..
DOSâ¿¡¼ ¹«¾ð°¡¸¦ ÇÏ´Â°Ç ¾Æ´ÒÅ×°í..
±×·³
__
À̰游
PS. ¾ÆÀ̵𸦠¸¸µé¾ú½À´Ï´Ù.
ÇÏÇÏÇÏ
¾Æ¸¶µµ Denial of ServiceÀÇ ¾àÀÚ°¡ ¾Æ´Ñµí½Í³×¿ä..
¹®¸ÆÀÇ ¶æÀ» ºÁµµ..
ÆÐŶ ¿¶ó°Ô ³¯·Á¼
¼¹ö°¡ °úºÎÇϵǼ ¸ÔÅëµÇ°Ô ¸¸µå´Â °É.ÅëÆ²¾î ÀÏÄ´ ¸»À̶ó°í
¾Ë°íÀֳ׿ë...
ĿĿ...º¸¾ÈÂÊ¿£ Áö½ÄÀÌ º°·ç ¾ø¾î¼±...¸Â´ÂÁö....
º¸¾È ½Å°æ¾µÁ¤µµ·Î ¾ÈÁ¤µÈ ¼¹ö¸¦ ¾ó·· ¸¸µé ±âȸ³ª ÀÖ¾úÀ½
ÁÁ°Ú±º¿ä..ÃÑÃÑ
À縸´ÔÀÌ ¸»¾¸Çϼ̵í Denial of Service ÀÇ ¾àÀܵ¥, ÆÐŶÀ» ¿¶ó°Ô ³¯¸®´Â °Í
¸»°íµµ ´ÜÁö socket À» ÀǵµÀûÀ¸·Î ¸¹ÀÌ ¿¸®°Ô Çϰųª, Ŭ¶óÀÌ¾ðÆ® ¸í·É¿¡
¹ÝÀÀÇÏ´Â ¼¹ö ¹× ¼ºñ½º¸¦ ÀǵµÀûÀ¸·Î ½ÉÇÏ°Ô ±«·ÓÈ÷´Â º¯ÅÂÇàÀ§¶ó°í ÇÒ ¼ö
ÀÖ½À´Ï´Ù.
icmp ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ ping flooding (Á×À½ÀÇ ÇÎ) µµ ÀÏÁ¾ÀÇ DoS ¾îÅÃÀ̶ó°í
ÇÒ ¼ö ÀÖ°Ú±º¿ä.
¿äÁò¿£ ping flooding °°Àº°Ô ÅëÇÏ´Â °÷Àº ¸î±ºµ¥ ¾ø½À´Ï´Ù¸¸. -_-;
±×·¡ÇÈ ¸Óµå¿¡¼ IP¿Í Æ÷Æ®°¡ ³ëÃâµÇ¸é, ¹æ¾î¸·(!) 󸮸¦ ÇØ³õÁö ¾Ê´Â ÇÑ DoS
¾îÅÿ¡ ´çÇϱ⠽±°Ú±º¿ä..
±×·³
¿¡... Àü TCP¸¸ ½á º¸¾Æ¼ UDPÀÇ °æ¿ì´Â Àß ¸ð¸£°Ú³×¿ä. µè±â·Î´Â UDP´Â º¸³½
¸Þ½ÃÁö°¡ Âɰ³Áö°Å³ª ÇÕÃÄÁöÁö´Â ¾Ê´Â´Ù°í ÇÏ´øµ¥ ÁøÂ¥ ±×·±Áö´Â...??? À̰Ç
UDP¸¦ ½á º¸½Å ºÐÀÇ ´äº¯ÀÌ ÇÊ¿äÇÑ µí...
TCPÀÇ Æ¯¼ºÀ» ´Ù½Ã »ý°¢ÇØ º¸ÀÚ¸é ÀÌ·± °Å°Åµç¿ä? Àü¼ÛÃø¿¡¼ ´ÙÀ½°ú °°ÀÌ
¸Þ½ÃÁö¸¦ º¸³ÂÀ»¶§:
send("123456789")
send("abcdefghi")
ÀÌ·¯ÇÑ ¼Û½ÅÀÌ ¼ö½ÅµÉ ¼ö ÀÖ´Â Á¶ÇÕÀº ¹«ÁöÇÏ°Ô ¸¹´Ù´Â °ÍÀÔ´Ï´Ù. ³×Æ®¿÷ »çÁ¤ÀÌ
ÁÁ´Ù¸é¾ß
123456789 abcdefghi º¸³½°Í ±×´ë·Î °¢°¢ 2¹øÀÇ FD_READ ¸Þ½ÃÁö·Î recv() µÉ
°ÍÀÌÁö¸¸ ³×Æ®¿÷ ºí·ÏÀ̳ª ±âŸ ¿©·¯°¡Áö »óȲ¿¡ µû¶ó
123 456789 abcdefghi
123456789 abcde fghi
123 456789abcd efghi
123456789abcdefgh i
123456789abcdefghi
µîµîµî
Àü¼ÛÃøÀÇ ¼ø¼¸¸ À¯ÁöµÉ »Ó ¾î¶»°Ô ¼ö½ÅµÇ´À³Ä´Â ¾Ë ¼ö ¾ø´Ù´Â °ÅÁÒ.
±×¸®°í ÀÎÅͳݿ¡¼ ±¸ÇÒ ¼ö ÀÖ´Â ¼ÒÄÏ ¼Ò½ºµéÀ» »ìÆìº¸¸é ±âº»ÀûÀÎ
±¸µ¿¹æ½Ä¿¡ ´ëÇÑ °£·«ÇÑ ±¸ÇöÀÌ°í ºí·ÏÅ· »óȲÀ̳ª ±âŸ ¿¡·¯ ¹ß»ý½ÃÀÇ
´ëó ·çƾÀº °ÅÀÇ ºüÁ® ÀÖ´Â °Í °°´õ±º¿ä. Àúµµ óÀ½ °øºÎÇÒ¶§ ÀÌÁ¡ ¶«¿¡
¸¹ÀÌ Çì¸ä´Âµ¥¿ä...
¾Æ ¾Æ¹«Æ° ÀÌ·¸°Ô ¾î¶»°Ô ¼ö½ÅµÉ Áö ¸ð¸£´Â ¸Þ½ÃÁö¸¦ ó¸®Çϱâ À§Çؼ´Â
¸Þ½ÃÁöÀÇ ±Ô°ÝÀ» ¾Æ·¡ ¸»¾¸µå¸°°Í ó·³ °íÁ¤À» ½ÃÄѳõ´Â °ÍÀÌ °¡Àå ÆíÇÏ´Ù°í
»ý°¢µË´Ï´Ù.
óÀ½ ¸î¹ÙÀÌÆ®¸¦ ÀÌÈÄ Àü¼ÛµÈ ¸Þ½ÃÁöÀÇ Å©±â·Î °íÁ¤½ÃÄÑ ¹ö¸®°Å³ª, ¾Æ´Ï¸é
¾Æ¿¹ ¸Þ½ÃÁöÀÇ Å©±â¸¦ Àϰý ÅëÀÏÇÏ´Â ¹æ¹ý(? ¼³¸¶ ÀÌ·± ¹«½ÄÇÑ ¹æ¹ýÀ»?)
ÀÏ´Ü ÀÌ·¸°Ô Àü¼Û ¼ö½Å ±Ô¾àÀ» Á¤ÇÏ¸é ¸Þ½ÃÁö°¡ ¾î¶»°Ô ¼ö½ÅµÇµç °£¿¡ 󸮴Â
°£´ÜÇØ Áý´Ï´Ù.
Àü¼ÛÇÏ´Â Ãø¿¡¼ º¸³½ ¿©·¯°³ÀÇ ¸Þ½ÃÁö°¡ ¾î¶² ½ÄÀ¸·Î ¹¶Ä¡°Å³ª Âɰ³Á³µç °£¿¡,
¼ö½ÅÃøÀº ¸Þ½ÃÁö°¡ ¾î¶² ÇüÅ·ΠµµÂøÇÒ °ÍÀÎÁö¸¦ ¾Ë°í ÀÖÀ¸¹Ç·Î ±× Çü½Ä¿¡ ¸Â°Ô
´ëÀÀÇÏ¸é µË´Ï´Ù.
recv() ÇÒ¶§ BufferÀÇ Å©±â¿Í ¹ÞÀ» ¹ÙÀÌÆ® ¼ö¸¦ ÃÖ´ë Å©±â·Î Àâ¾Æµµ »ó°üÀº
¾ø½À´Ï´Ù. ¹®Á¦´Â recv()ÇØ¼ ¹ÞÀº µ¥ÀÌÅͰ¡ Àü¼ÛÃø¿¡ º¸³½ ¸ðµç µ¥ÀÌÅÍÀÎÁö,
¾Æ´Ï¸é Áß°£¿¡ ¸Þ½ÃÁö°¡ ³ª´µ¾îÁ® ÀϺθ¸ ¸ÕÀú ¼ö½ÅµÈ °ÍÀÎÁö ÆÇ´ÜÇÒ ¼ö
ÀÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
Âü°í·Î ¼ÒÄÏÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ±× ¼ÒÄÏÀÌ ¼ö½ÅÇÑ ¸Þ½ÃÁö¸¦
¸ðµÎ ´Ù recv()ÇØ¼ Àбâ Àü ±îÁö´Â FD_READ ¸Þ½ÃÁö°¡ °è¼Ó ¹ß»ýÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
ÀÌ ºÎºÐ¿¡ ´ëÇÑ ÄÚµå´Â Àü¿¡ Á¦°¡ ½á ³õÀº ±ÛÀÌ ¾Æ·¡¿¡ ÀÖÀ¸´Ï Âü°íÇϼ¼¿ä.
Á¦ °æÇè»ó, ±×¸®°í ¾îµð¼ ÀÐÀº ¹®¼ÀÇ ³»¿ë»ó, UDP ¼ÒÄÏÀ¸·Î ÁÖ°í¹Þ´Â ¸Þ½ÃÁö´Â
TCPó·³ Âɰ³Áö°Å³ª ºÙÁö´Â ¾Ê½À´Ï´Ù.
UDP°¡ Âɰ³Áö°Å³ª ºÙ´Â´Ù¸é, ´ëü·Î UDP Åë½Å·®ÀÌ »ó´ëÀûÀ¸·Î ³ôÀº Cafe9Àº ¿Àµ¿ÀÛÀ»
ÀÚÁÖ Çß°ÚÁÒ.
¾È³çÇÏ½Ê´Ï±î ¿©·¯ºÐ...
¾Æ·¡ÀÇ Äڵ带 À¯½ÉÈ÷ ºÁÁÖ¼¼¿ä..
char pRecv[1024];
int iRecvLen;
if((iRecvLen = recv(sSocket, pRecv, 1024, 0)) != SOCKET_ERROR)
{
pRecv[iRecvLen] = NULL;
printf("%s\n", pRecv);
}
À§ÀÇ ¸í·ÉÁß ¹¹ À߸øµÈ °ÍÀÌ ÀÖ³ª¿ä?
0x00000000ÀÇ ¹øÁö¿¡ "written"ÇÒ ¼ö ¾ø´Ù´Â ¸Þ¼¼Áö°¡
³ª¿É´Ï´Ù.
¹°·Ð sSocketÀº Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°á ¿äûÀ» accept()ÇÔ¼ö·Î ¹ÞÀº ¸®ÅÏ °ªÀÔ´Ï´Ù.
recv¿¡¼ Àú·± ¿¡·¯°¡ ³ª¿À´Ï ¾î¿¼ö°¡ ¾ø±º¿ä..
recvÇÔ¼ö¿¡ ¾î¶² ºÎÀÛ¿ëÀÌ... (^^;)
¾Æ¹«Æ° ¾Æ½Ã´ÂºÐ ´äº¯ ºÎŹ µå·Á¿ä..
ÀÌ±Û º¸´Â ¸ðµç ºÐµé ÁÁÀº ÇÏ·ç µÇ¼¼¿ä...
µµÂø¼ø¼°¡ º¸ÀåµÇÁö ¾Ê´Â UDP °¡ Âɰ³Áø´Ù¸é..?
¾µ¼ö°¡ ÀÖÀ»±î¿ä?
´ç¿¬È÷ UDP´Â ¾ÈÂɰ³Á®¾ß Á¤»óÀ̰ÚÁÒ..
ÈÝ~
- Testors
ÀÏ´Ü ÄÚµùÇϽŠ¼Ò½º·Î Å×½ºÆ®¸¦ ÇØº¸¾ÒÀ¸³ª.....
º°ÀÌ»ó ¾øÀÌ Àß µÇ´õ±º¿ä........
À½³Ä.....
Á¦ »ý°¢¿£ accept()´Ü°è¿¡¼ À߸øµÇ¾î..¼ÒÄÏÀÌ »ý¼º ¾ÈµÇ¾ú°Å³ª...
¾Æ´Ï¸é ±× ´ÙÀ½¿¡ ¾î¶² ¿¡·¯°¡ »ý°Ü¼.....recv()°¡ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê¾Æ¼
¹ÞÀº°Ô 0¹ÙÀÌÆ®´Ï±î..
±×·¡¼ ±×·¸°Ô µÈ°Ô ¾Æ´Ò±î....
ÀÏ´Ü ¿ÏÀüÇÑ ¼Ò½º¸¦ ºÁ¾ß ¾Ë²¨ °°³×¿ä...
°Ô½ÃÆÇÀ» Àдٺ¸´Ï
NODELAY ¸¦ ¾²¸é
ÆÖŶÀ» 10 ¹ÙÀÌÆ® ¾¿ º¸³½´Ù¸é recv½Ã
ÆÖŶÀ» ¹ÞÀ»¶§ 10¹ÙÀÌÆ® À̳»·Î ¹ÞÀ»¼ö´Â
ÀÖÁö¸¸ Çѹø¿¡ 10¹ÙÀÌÆ® ÀÌ»ó Àº ¹ÞÁö¾Ê´Â´Ù´Âµ¥.
°á±¹ Âɰ³Áö´Â °æ¿ì´Â ÀÖÁö¸¸ ÇÕÃļ
µé¾î¿ÀÁö´Â ¾Ê´Â´Ù´Â ¼Ò¸®Àΰ¡¿ä..??
À½..Çò°¥¸®´Â±º.
ÇÏ¿©Æ° µÑ´Ù󸮸¦ ±×³É ÇØÁ൵
µÇÁö¸¸ ÇÏ¿©Æ° À̰æ¿ì¸¦
¾Ë°í½Í¾î .Áú¹®ÇÕ´Ï´Ù.
±×·³.
À¢¸¸Çؼ´Â ±×°Å ¾²Áö ¸¶¼¼¿ä.
TCP_NODELAY´Â Nagle algorithmÀ» ¾È¾²±â ¶§¹®¿¡, ½ÇÁúÀûÀÎ ·¹ÀÌÅϽð¡ Æø¹ßÀûÀ¸·Î
Áõ°¡ÇÑ´Ù´Â ¼Ò¹®ÀÌ ÀÖ½À´Ï´Ù.
¾È³çÇϼ¼¿ä..^^;;; ¿©±â ³×Æ®¿÷ °ü·Ã °Ô½ÃÆÇÀÌ ÀÖ´ÂÁÙµµ ¸ð¸£°í
¾îÁ¦´Â À©µµ °Ô½ÃÆÇ¿¡´Ù À©¼Ó °ü·Ã±ÛÀ» Àû¾î ¹ö·È³×¿±..^^
¹¹.. ´Ù¸¥ºÐÀÌ ´äÀ» ÇØ ÁÖ¼ÌÁö¸¸.. (¿©±â °Ô½ÃÆÇ¿¡ ´äÀÌ ¾È¿Ã¶ó¿À¸é
´Ù½Ã °Å±â´Ù Àû¾î¹ö·Á¾ß¡..^^;;;;).. ´äÀ» Àû¾î Á̴ּµ¥. ÇÏ¿©Æ°
±×ºÐ ¸»¾¸´ë·Î ÇØ¼, ÄÄÆÄÀÏ ¸µÅ©±îÁø ÀÌ»ó¾øÀÌ ³Ñ¾î °¬½À´Ï´Ù..
±Ùµ¥.. ±Ùµ¥..--;;;
The target platform of 'C:\windows\windock.dll' does not match the current
target platform.
À̶ó´Â °æ°í°¡ ³ª¿À¸é¼ ÇÁ·Î±×·¥ ½ÇÇàÀÌ ¾ÈµÇ´Â±º¿ä.--;;;
½ÇÇàÀº F5Ű³ª ÇÏ¿©Æ°. ¿©±â¼ ½ÇÇàÇϴ°ÍÀº µÇÁö ¾Ê°í ÄÄÆÄÀÏ ¸µÅ©°¡ ³¡³
½ÇÇàÆÄÀÏÀ» ½ÇÇàÇϸé ÀÌ»óÀÌ ¾ø½À´Ï´Ù..(¿¡·¯¸Þ½ÃÁö°¡ ¶ßÁö ¾Ê´Â´Ù´Â ¸»ÀÌÁÒ..)
À½.. Á¤È®È÷ ¸»Çϸé.. ¿¡·¯ ¸Þ½ÃÁö°¡ ¾Æ´Ï°í °æ°íâÀÌ ¶ß³×¿ä..
Á¦°¡ ¾Ë±â·Ð winsock.dllÀº 16ºñÆ®¿ëÀ¸·Î ¾Ë°í Àִµ¥, 32ºñÆ®¿ëÀº
windows\system\ws2_32.dll¾Æ´Ñ°¡¿ä? ¿Ö ÀÌ·± ¿¡·¯¸Þ½ÃÁö°¡ ³ª¿À´Â°ÇÁö..--;;
¸ð ½ÇÇàÀÌ¾ß µÇ´Ï±î º°»ó°ü ¾ø±âµµ Çѵ¥.. ¾î¶µç µð¹ö±ëÀÌ ¾î·Á¿ì´Ï±î¿ä..
´äº¯ ¾Ë°í°è½Ã°Å³ª µµ¿òÀÌ µÉ¸¸ÇÑ ¸»¾¸ÀÌ¶óµµ ÇѸ¶µð¾¿ ´øÁ®ÁÖ°í °¡ÁÖ¼¼¿±..^^;;
±×·³. ¹°·¯ °©´Ï´Ù.^^;; ÁÁÀº ÇÏ·ç µÇ½Ã±æ..
ps - api¼ÒÄÏ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÁÁÀº ¼Ò½º ¾Ë°í Àְųª ÀÖÀ¸½ÅºÐµéÀº
ÀÚ·á½Ç¿¡ Á» ¿Ã·Á ÁÖ¼¼¿ä..^^;;; udp¼Ò½º´Â ¾à°£ ¿Ã¶ó¿Í Àִ°Š°°´øµ¥
tcp¿¡ °üÇÑ°Ç ¾ø´õ±º¿ä.. ±×·³.. È×~~~~
¾È³çÇϼ¼¿ä? ÇбÔÀÔ´Ï´Ù.
NT ¿¡¼ IO CompletionPort »ç¿ë½Ã ÀÔ·ÂÀ» ¹Þ¾ÆµéÀ϶§ ReadFile À» »ç¿ëÇÏ´ÂÁö
¾Æ´Ï¸é WSARecv ¸¦ »ç¿ëÇÏ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù. WinSock2 ¸¦ »ç¿ëÇÑ´Ù°í °¡Á¤ÇßÀ»¶§
SDK ÀÇ ¿¹Á¦µéÀ» º¸´Ï ReadFile µé·Î µÇ¾îÀÖ´øµ¥, ¿©±â¿¡¼´Â ¹ÞÀ» ·®À» °íÁ¤
ÇØÁà¾ß ÇÏ°Ô µÇ¾îÀÖ´õ±º¿ä.
ºÎʵ叮°Ú½À´Ï´Ù
ÇбÔ
neolith
ȸ»ç¿¡¼(kornet, 512kbps)¿¡¼ ÇÏÀÌÅÚ Á¢¼ÓÇÏ´Ùº¸¸é...
Æä½º¿öµå°¡ ©·Á¼ ¼ø¼°¡ µÚ¹Ù²¸ ÀԷµɶ§°¡ Á¾Á¾ ÀÖ´õ±º¿ä...
Àú´Â üÆÃâÀ» ¿¾îµÎ°í... ·Î±×ÀÎÀ» Çϱ⶧¹®¿¡... ¿ÀŸ´Â ºÐ¸í ¾Æ´Ï¿¡¿ä... ^^
-- ȼö.
chatting server¸¦ Â¥°í Àִµ¥¿ä.
client°¡ server¿¡ Á¢¼ÓÇÒ¶§ ¼¹öÀÇ ÁÖ¼Ò¿Í Æ÷Æ® , ±×¸®°í À̸§À» ¾²°í
connect¸¦ Çϴµ¥¿ä. serverÃø¿¡¼ clientµéÀÇ À̸§À» °ü¸®ÇÏ·ÁÇϴµ¥
À̸§Àº ¾ðÁ¦ client°¡ server¿¡ ³¯·Á¾ß Çϳª¿ä?
client,server´Â CAysncSocketÀ» »ó¼Ó¹ÞÀº class·Î ±¸ÇöÇϰí ÀÖ½À´Ï´Ù.
±×·±µ¥ ¹®Á¦´Â clientÀÇ OnConnect¿¡¼ À̸§À» server¿¡°Ô ³¯¸®·Á°í Çϴµ¥.
OnConnect´Â serverÀÇ OnAcceptº¸´Ù ¸ÕÀú ºÒ¸®´Â °Í °°Àºµ¥¿ä.
±×·¸´Ù¸é À̸§Àº server¿¡¼ ¿ä±¸ÇßÀ» ¶§ ³¯·ÁÁà¾ßÇϳª¿ä?
Áú¹®ÀÌ º¹ÀâÇØÁ³´Âµ¥¿ä. °£´ÜÈ÷ ¸»Çؼ client¿¡¼ server¿¡ ÀÚ±â À̸§°°Àº
Á¤º¸¸¦ ³¯¸®´Â °ÍÀ» OnConnect¿¡¼ ÇØµµ µÇ³ª¿ä?
À½.. ´äº¯À» ºÎʵå·Á¿ë~~ ^^
ÁÙ°Å¿î ÁÖ¸» µÇ¼¼¿ä.
from ±ÇÇü¼®
ÇÏÀÌÅÚ BBS ÀÇ ¹ö±× À̰ڱº¿ä. TCP/IP ´Â ²Ï³ª ½Å¿ëÀÖ´Â ÇÁ·ÎÅäÄÝ ÀÔ´Ï´Ù.listening socket¿¡¼ server¿¡ Á¢¼ÓÇÏ´Â »ç¿ëÀÚ¿¡ ´ëÇØ Á¢¼Ó¿¡ ´ëÇÑ Å¬·¡½º(CClient
)¸¦
¸¸µé¾î¼ CClientList¿¡ µî·ÏÇϴµ¥¿ä.
Á¦°¡ ±Ã±ÝÇÑ °ÍÀº Á¢¼ÓÇÏ´Â »ç¿ëÀÚ¸¶´Ù ÇϳªÀÇ ¾²·¹µå¸¦ »ý¼º½ÃÄÑ ±× ¾²·¹µå ¾È¿¡¼
¹«ÇÑ ·çÇÁ¸¦ µ¹¸é recvÇÏ´Â °Í°ú WSAAsyncSelect¸¦ ½á¼ recvÇÏ´Â ½ÃÁ¡À» ¸Þ½ÃÁö·Î
ó¸® (FD_READ) ÇÏ´Â °ÍÀÇ Â÷À̳ª Àå´ÜÁ¡Àº ¹«¾ð°¡¿ä?
Àü ÇöÀç äÆÃ ¼¹ö¸¦ ±¸ÇöÁßÀε¥ À̺κÐÀÌ ±Ã±ÝÇϳ׿ä.
´äº¯ºÎʵ叮¸ç..
fluorite
hithere@hitel.net
overlapped i/o¸¦ ÀÌ¿ëÇÑ ¼ÒÄÏ¿¡ ´ëÇØ ¾Ë°í ½Í½À´Ï´Ù.
ºñÁ°¾¾¸¦ µÚÁ®º¸´Ï ¿¹Á¦°¡ ¸î°³ ³ª¿À±ä Çϴµ¥ µµ¹«Áö
¸ð¸£°Ú±º¿ä.
°³¿äºÎÅÍ..ÁÖ¿í ¼³¸íÁ» ÇØÁÖ¼ÌÀ¸¸é ÁÁ°Ú½À´Ï´Ù.
¾È³çÇϼ¼¿ä. µµ¿òÀÌ µÉ¸¸ÇÑ Ã¥À» ¹ß°ßÇØ¼ ¾¹´Ï´Ù. Á¦¸ñÀº Network programming
for Windows À̰í¿ä Jones ¿Í Ohlund °øÀú, Microsoft press ¿¡¼ ³ª¿Ô½À´Ï´Ù.
Ã¥°ªÀº 49,000 ¿ø. ÀÌ Ã¥À» ¿¹Àü¿¡µµ º¸±ä Çß¾ú´Âµ¥ °ü½É»ç¿Í »ó°ü¾ø´Â ³»¿ëÀÌ
³Ê¹« ¸¹Àº °Í °°¾Æ¼ ´ëÃæ ¾³ º¸±â¸¸ ÇÏ°í ¾È »ò´õ·¨½À´Ï´Ù. ÇÏÁö¸¸ ¿äÁò¿¡
ǰ°Ô µÇ´Â ¿©·¯°¡Áö ±Ã±ÝÁõ¿¡ ´ëÇÑ ÇØ´äÀÌ ÀÌ Ã¥¿¡ °ÅÀÇ ´Ù µé¾îÀÖ´õ±º¿ä.
°ÅµÎÀý¹ÌÇϰí Winsock À» »ç¿ëÇÑ Overlapped I/O ¶û I/O Completion port ÀÇ
ÀÀ¿ë (worker thread ¸¦ ÀÌ¿ëÇÑ) ¿¡ ´ëÇÑ ½ÇÁúÀûÀÎ ¼³¸íÀ» ¾ò±â À§ÇØ ¸çÄ¥µ¿¾È
À¥µµ µÚÁ®º¸°í, MSDN ÀÇ »ùÇÃÀ̳ª ¹®¼µéµµ µÚÁ®º¸°í Çߴµ¥ ¸î°¡Áö ÀÖ´Â ³»¿ë
µéÀº Winsock º¸´Ù´Â Named pipe ÂÊ¿¡ Ä¡ÁߵǾî ÀÌÇØ°¡ Èûµé¾ú°í, ½ÇÁúÀûÀ¸·Î
¾µ¸¸ÇÑ ¿¹Á¦¸¦ ÁØ °æ¿ì´Â °ÅÀÇ ¾ø¾ú½À´Ï´Ù¸¸, ´ÙÇàÈ÷ ÀÌ Ã¥¿¡¼ ±× ºÎºÐ¿¡ ´ëÇÑ
´ëºÎºÐÀÇ ÇØ´äÀ» ãÀ» ¼ö ÀÖ¾ú½À´Ï´Ù. Ã¥Àº Á» µÎ²®Áö¸¸ Á¤ÀÛ º¼¸¸ÇÑ ºÎºÐÀº
Winsock ¿¡ ´ëÇÑ ±âº»±â¸¦ ¾Æ´Â »ç¶÷À̶ó¸é ÇÑ 10 ÆäÀÌÁöÁ¤µµ¿¡ ºÒ°úÇÒ°Ì´Ï´Ù
ÇÏÁö¸¸ ±× 10 ÆäÀÌÁö¿¡ Á¤¸» ¾ÖŸ°Ô ã´ø ÇØ´äµéÀÌ µé¾îÀÖ´õ±º¿ä.
¾Æ½¬¿îÁ¡À̶ó¸é ¿¹Á¦°¡ ºÎÁ·ÇÏ´Ù´Â Á¡Àε¥, ±×³ª¸¶ ¿¡ÄÚ ¼¹ö¶óµµ Çϳª Àִ°É
´ÙÇàÀ¸·Î ¿©±æ ¼ö ¹Û¿¡ ¾ø´Â »óȲÀ̶ó. À̰Џ»°íµµ Server-sided programming
¾î¼°í Çϴ åµµ ÀÖ¾ú´Âµ¥, ¾Æ¹«·¡µµ ±× Ã¥º¸´Ù´Â ÀÌ Ã¥ÀÌ Á» ´õ Çǰ¡ µÇ°í
»ìÀÌ µÇ´Â ³»¿ëÀÌ º¸ÀÌ´õ±º¿ä. ÁָӴϰ¡ ³Ë³ËÇØÁö¸é ±× Ã¥µµ Ã¥Àå¿¡ ²È¾Æ³õÀ»
°èȹÀÔ´Ï´Ù¸¸.
NT ·Î ¼ö¹é ¼öõ¸íÀÌ Á¢¼Ó°¡´ÉÇÑ ¼¹ö¸¦ ¸¸µé±â À§ÇÑ ±âº»À» ½×À¸½Ç ºÐÀº
²À º¸½Ê¼î
ÇбÔ
neolith
äÆÃ ÇÁ·Î±×·¥À» ¸¸µé°í ÀÖ½À´Ï´Ù.
½Ì±Û ½º·¹µå ÇÁ·Î±×·¥Àε¥ ÀÐÇôÁø ¹öÆÛ¸¦ ó¸®ÇÏ´Â °úÁ¤¿¡¼ ¶Ç´Ù½Ã
FD_READ À̺¥Æ®°¡ ¹ß»ýÇÏ¿© ÄÚµå Æ÷ÀÎÆ®°¡ ±×ÂÊÀ¸·Î ¿Å°ÜÁö´Â °Í °°½À´Ï´Ù. --;
ÀüüÀû ±¸Á¶¸¦ ±×·Áº¸¸é..
FD_READ:
1. Àд´Ù. ( while ( recv(..) > 0 ) )
2. ÁغñµÈ ¹öÆÛ¿¡ ºÙÀδÙ.(©¸±°æ¿ì´ëºñ) append_buf(ÀÐÇôÁø¹öÆÛ);
3. ó¸®ÇÑ´Ù. (process_buf())
¶ó°í ÇÒ¶§ 3¹øÀÇ °æ¿ì ½Ã°£À» ¸¹ÀÌ Àâ¾Æ¸Ô°Å³ª ºí·ÏµÇ´Â(? ¿¹¸¦ µé¾î
¸ð´Þ ´ÙÀ̾ó·Î±×°¡ ¶¸À» ¶§ ÁøÇàÀÌ ¾ÈµÇ´Â°Íó·³) °æ¿ì °©ÀÚ±â 1¹øÀ¸·Î
µ¹¾Æ°¥ ¶§°¡ ÀÖ½À´Ï´Ù. ÀÌ·² ¶§ ´ëÃ¥ÀÌ ¾ø±º¿ä. --;
Èì..¾î¶»°Ô ó¸®ÇÒ ¼ö ÀÖÀ»±î¿ä?
À½.. À̺¥Æ®°¡ Áߺ¹Çؼ ¶³¾îÁöÁö´Â ¾Ê´Âµ¥¿ä??
¼ö»óÇϸé FD_READ ºí·° ½ÃÀÛ°ú ³¡¿¡´Ù°¡ Log³²°Üº¸¼¼¿ä.
START Çϳª END Çϳª ·Î±× ³²°Ü¼ ¼·Î ¦ÀÌ ¾È¸ÂÀ¸¸é
Áß°£¿¡ ³¢¾îµé±âµµ ÇÑ´Ù´Â Áõ°Å°¡ µÇ°ÚÁÒ?
±Ùµ¥ Àú´Â ±×·±ÀÏ ÀϾî³ÀûÀÌ Çѹøµµ ¾ø´Âµ¥..
Çѹø Å×½ºÆ®Çغ¸½Ã±æ..
overlapped i/o ·Î ¼ÒÄÏ ºÎºÐÀ» ¸ùâ ¶â¾î°íÄ¡°í Àִµ¥ ÇÏ´Ùº¸´Ï
À̺¥Æ® ´ë±â ÃÖ´ë °¹¼ö(WSA_MAXIMUM_WAIT_EVENTS)°¡ 64°³·Î ¼±¾ð
µÇ¾îÀֳ׿ä.nt¿¡¼µµ Á¤¸» 64°³°¡ ÃÖ´ëÀΰ¡¿ä?
ÀÌ·±½ÄÀ̶ó¸é ¼¹ö ÇÑ´ë´ç 64¸í¹Û¿¡ ó¸® ¸øÇÑ´Ü ¾ê±äµ¥.¾Æ´Ï ½ÇÁ¦·Î´Â
63¸íÀ̰ڱº¿ä. Àü¿¡ ¼ÒÄÏ °¹¼ö ¾ê±âµÇ¾ú´ø°Í°úµµ °ü·ÃÀÌ ÀÖÀ»°Å °°Àºµ¥
À̰Š¾Æ½Ã´Â ºÐ ´äº¯ ºÎʵ右´Ï´Ù.
±×³É ºñµ¿±â ¼ÒÄÏÀ¸·Î 50°³ÂëÀº ¿¾îºÃ´Âµ¥ ¸îÀÏ ³¯·Á°¡¸ç ¶â¾î°íÄ¡´Â°Ô
64°³ ÀÌ»óÀ» ¼Æ÷Æ® ¸øÇÑ´Ù¸é ±»ÀÌ °íÄ¥ ÀÌÀ¯°¡...
¿¹ ¸Â½À´Ï´Ù.. WaitForMultipleObjectsµîÀÇ ÇÔ¼öµéÀº 64°³ÀÇ ÇѰ谡 ÀÖ½À´Ï´Ù.
±×·¸±â ¶§¹®¿¡, ÇѰ³ ½º·¹µå°¡ ÀÀ´ä ´ë±â¸¦ ÇÒ ¼ö ÀÖ´Â °´Ã¼´Â ÃÖ´ë 64°³ÀÔ´Ï´Ù.
ÇØ°á¹æ¹ýÀº, Á¢¼ÓÇϴ Ŭ¶óÀÌÀ̾ðÆ®ÀÇ ¼ö/64°³¸¸ÅÀÇ ½º·¹µå¸¦ ¸¸µé¾î µ¹¸®´Â °Í
ÀÔ´Ï´Ù.
ÀÔÃâ·Â ¿Ï·á Æ÷Æ®´Â NT¿¡¼ ¹Û¿¡ µÇÁú ¾ÊÁö¸¸
¼¹ö ÇÁ·Î±×·¡¹ÖÀ̶ó¸é NT¸¦ »ç¿ëÇϽÇÅ×°í..
±×·¸´Ù¸é °¡Àå ÀÌ»óÀûÀÎ °ÍÀº Áßø ÀÔÃâ·Â¿¡ ÀÔÃâ·Â ¿Ï·áÆ÷Æ®¸¦
»ç¿ëÇÏ´Â °Å¶ó°í Ã¥¿¡ ³ª¿Í ÀÖ±º¿ä. ¾ÆÁ÷ ÇØº¸Áø ¾Ê¾Ò½À´Ï´Ù.
½ÉÁö¾î Ã¥ÀÇ ÀúÀÚµµ ÇØº¸Áö ¾Ê¾Ò´Ù°í Çϴ±º¿ä.
WaitForMultipleObjects()´Â ¿ª½Ã 64°³ÀÇ ÇÚµéÀÇ ¹è¿ÀÇ ÇѰ赵
Áßø¿Ï·áÆ÷Æ®ÀÇ GetQueuedCompletionStatus()¸¦ »ç¿ëÇÏ¸é ³Ñ°Ôµµ
°¡´ÉÇϴٴ±º¿ä.
¾Ïư ±Ô¸ð°¡ Å«(À¯Àú ¼öõ, ¼ö¸¸ ȤÀº ±×ÀÌ»ó) ¼¹ö ¾ÖÇø®ÄÉÀ̼ÇÀÇ
¼³°è·Î ±×¸®°í NT¿¡ ¸ÖƼCPU¸¦ ¾´´Ù¸é ´õ´õ¿í ÃÖÀûÀÇ Á¶°ÇÀ̶ó°í Çϴ±º¿ä.
½½½½ I/O Completion PortÀÇ Á¤º¸ °øÀ¯¸¦ À§ÇØ ºÐÀ§±â¸¦..
completion i/o¸¦ »ç¿ëÇØ¼ ´ëÃæ Á¢¼ÓÇÏ°í ²÷°í ¹Þ´Â°Ç µÇ´Â°Å °°Àºµ¥
send½Ã ºí·°ÀÌ °É·Á¼ ´õ ÀÌ»ó º¸³¾ ¼ö ¾ø´Â °æ¿ì¶ó´ø°¡...µîµî
¼ÒÄÏÀÇ »óŸ¦ ¾î¶»°Ô ¾Ë ¼ö ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.send½º·¹µå¸¦ ¸¸µé¾î¼
´Ù º¸³¾¶§±îÁö º¸³»Áà¾ßÇϳª¿ä?
fd_write »óŰ¡ µÇ¸é ÀÚµ¿À¸·Î ¾Ë ¼ö ÀÖ´Â ¹æ¹ýÀ̳ª..±×·±°Ç ¾ø´ÂÁö
¾Ë°í ½Í½À´Ï´Ù.
cpuÁ¡À¯À²Àº ¶È°°±º¿ä.ÂÁ.
accpetÇÏ´Â ºÎºÐÀ» ½º·¹µå ¾²±â ½È¾î¼ accpet¸¸ ºñµ¿±â ¼ÒÄÏ
À» ¾²°í ³ª¸ÓÁø complition i/o·Î ÇÏ·Á°í Çߴµ¥ accept½º·¹µå ¸¸µé¾î¼
µ¹·Áº¸´Ï ¶È°°³×¿ä.
¾îÂ÷ÇÇ ¸Þ½ÃÁö ¼ö½ÅÇÒ À©µµ¿ì¸¦ µû·Î ¸¸µé¸é ³»ºÎÀûÀ¸·Ð ½º·¹µå°¡
Çϳª ´õ »ý±â´Â°Å´Ï..Èì.ÆÛÆ÷¸Õ½º°¡ ³ªÀ» ÀÌÀ¯°¡ ÀüÇô ¾ø°Ú´Ü »ý°¢..
wsaasync¼ÒÄÏ¿¡¼ overlapped i/o·Î overlapped i/o¿¡¼ completion i/o·Î..
À½..»ç½Ç ¸Ç óÀ½¿£ ºí·°Å· ¼ÒÄÏÀ» ½è¾úÀ¸´Ï...
Åë°·Î °¥¾Æ¾þ´Â°Ô ¼¼¹øÂ°±º¿ä.
ÀÌ Áþ ÇÏ´Ù ½Ã°£ ´Ù °¡°Ú³×¿ä.ÂÁÂÁ.
winsock¿¡¼ ¼ÒÀ§ ¸»ÇÏ´Â 'À¯µ¿ ip'·Î´Â ¼¹ö°¡ µÉ¼ö ¾ø´ÂÁö¿ä?
À¯µ¿ ipÀ» ¼¹ö·Î ¸¸µé°í Ŭ¶óÀÌ¾ðÆ®¸¦ Á¢¼Ó½ÃÄ×´õ´Ï
Á¢¼ÓÀÌ ¾ÈµÇ´õ±º¿ä. ½ºÅ¸°°Àº °æ¿ì¿¡´Â ½Ç°ÔÀÓÀ¸·Î µé¾î°¡¸é
¸ÞÀμ¹ö¿¡¼ ºÐ¸®µÇ¾î ³ª¿Í ÀÚ±âµé³¢¸® ¿¬°áÀÌ ÀÌ·ç¾îÁö´Â
°É·ç ¾Ë°í Àִµ¥, ¾Æ´Ñ°¨?
¾î¶»°Ô µÆµç, À¯µ¿ ip´Â client°¡ addressingÀ» ¸øÇÏ´Â °Í °°¾Æ¿ä!!!
????
¹°·Ð ¼¹ö°¡ µÉ ¼ö ÀÖÁ®.
±×Ä¡¸¸ ¼¹ö°¡ µÉ¶§ ¾î´À IP·Î ÀâÈúÁö ¸ð¸£±â¶§¹®¿¡
Ç×»ó ÀÚ½ÅÀÇ IP¸¦ ¾Ë·ÁÁà¾ßÇÕ´Ï´Ù.
ÀúÀÇ °æ¿ì À̸¦ ¸·±âÀ§Çؼ ¸ÞÀμ¹ö¶û ¿¬°áµÈ ¼ÒÄÏÀÇ ¾îµå·¹½º¸¦ ÀÎÀÚ·Î ³Ñ°Ü¼
Ŭ¶óÀÌ¾ðÆ® ¼¹ö¸¦ ¸ÞÀμ¹ö¿¡ ¿¬°áµÈ ¼ÒÄÏIP¶û Ç×»ó °°°Ô »ý¼ºÇÕ´Ï´Ù.
¸ÞÀÎ ¼¹ö¿¡°Ô´Â ÀÌ·¯ÇÑ IPÁ¤º¸µéÀ» ³Ñ°ÜÁÖ°í...
´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇÏ·Á¸é ¸ÞÀμ¹ö°¡ »ó´ëÃøÀÇ IP¸¦ ³Ñ°ÜÁà¾ß°ÚÁ®.
À§ÀÇ ¹æ½ÄÀ» ÇÏÀÌÅÚPPP, µÎ·ç³Ý¿¡¼ Å×½ºÆ®Çغôµ¥ µÑ´Ù À¯µ¿¾ÆÀÌÇÇÁö¸¸ ¾Æ¹«·±
¹®Á¦°¡ ¾ø¾ú½À´Ï´Ù.
¿ÀÀçÈÆ´Ô²²¼ ¿Ã·ÁÁֽŠ´äº¯ °¨»çÇÕ´Ï´Ù.
¾ÆÁ÷ Ãʺ¸ÀÎÁö¶ó ¿ÀÀçÈÆ´Ô²²¼ ¿Ã¸®½Å ±ÛÁß
±Ã±ÝÇÑ ºÎºÐÀ» ¹ßÃéÇØ¼ ´Ù½Ã ¿Ã¸³´Ï´Ù.
[-------------------------------------------
¹°·Ð ¼¹ö°¡ µÉ ¼ö ÀÖÁ®.
±×Ä¡¸¸ ¼¹ö°¡ µÉ¶§ ¾î´À IP(1)·Î ÀâÈúÁö ¸ð¸£±â¶§¹®¿¡
Ç×»ó ÀÚ½ÅÀÇ IP(2)¸¦ ¾Ë·ÁÁà¾ßÇÕ´Ï´Ù.
ÀúÀÇ °æ¿ì À̸¦ ¸·±âÀ§Çؼ ¸ÞÀμ¹ö¶û ¿¬°áµÈ ¼ÒÄÏÀÇ ¾îµå·¹½º(3)¸¦ ÀÎÀÚ·Î ³Ñ°Ü¼
Ŭ¶óÀÌ¾ðÆ® ¼¹ö¸¦ ¸ÞÀμ¹ö¿¡ ¿¬°áµÈ ¼ÒÄÏIP¶û Ç×»ó °°°Ô »ý¼ºÇÕ´Ï´Ù(4).
¸ÞÀÎ ¼¹ö¿¡°Ô´Â ÀÌ·¯ÇÑ IPÁ¤º¸µéÀ» ³Ñ°ÜÁÖ°í...(5)
´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇÏ·Á¸é ¸ÞÀμ¹ö°¡ »ó´ëÃøÀÇ IP¸¦ ³Ñ°ÜÁà¾ß°ÚÁ®.
À§ÀÇ ¹æ½ÄÀ» ÇÏÀÌÅÚPPP, µÎ·ç³Ý¿¡¼ Å×½ºÆ®Çغôµ¥ µÑ´Ù À¯µ¿¾ÆÀÌÇÇÁö¸¸ ¾Æ¹«·±
¹®Á¦°¡ ¾ø¾ú½À´Ï´Ù.
]----------------------------------------------
(1) À¯µ¿ipÀÇ ¹°¸®ÀûÀÎ ÀÛ¿ë?,
(2) ¿ÜºÎ¿¡¼ º¼¶§ ip°¡ ÀÚ²Ù ¹Ù²î³ª¿ä?
(3) acceptÇÒ¶§ ¹Þ¾ÆµÎ¾ú´ø SOCKADDR ¸»¾¸ÇϽôÂÁö?
(4) ¾îÄÉÇÏ´Â °ÇÁö ±¸Ã¼ÀûÀ¸·Î´Ù°¡^^;;?
(5) ´Ù½Ã ³Ñ°ÜÁÖ´Â ÀÌÀ¯°¡ ¹«¾ùÀÎÁö?
ÀúÀÇ °æ¿ì´Â TCP/IP ±â¹ÝÀÔ´Ï´Ù. (Á¦´ë·Î ¹°¾îº¸´Â°ÇÁöµµ Àß ¸ð¸£°Ú³×^^;; ¿¡±¸¿¡±¸)
¹Ù»Ú½Ã´õ¶óµµ À§ÀÇ Áú¹®¿¡ ´äÀ» ÁÖ½Ã¸é ¸Á±ØÇÏ¿©ÀÌ´Ù^^. ºÎʵ右´Ï´Ù.....
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
Àúµµ ³×Æ®¿÷ ÀÔ¹®ÇÑÁö ÇÑ´Þµµ ä ¾ÈµÇ¾î¼ Á¦°¡ ¾Æ´Â °ÍÀÌ È®½ÇÇѰÍÀÎÁö´Â ¸ð¸£Áö¸¸
ÀÏ´ÜÀº Á¦°¡ ¾Æ´Â ³»¿ëÀ» Åä´ë·Î ´äº¯ µå¸³´Ï´Ù.
(1) À¯µ¿ipÀÇ ¹°¸®ÀûÀÎ ÀÛ¿ë?,
- ip¸¦ Á¦°øÇØÁÖ´Â ¾÷ü¿¡¼ °íÁ¤ÀûÀ¸·Î ÇÒ´çÇÏ´À³Ä Ç×»ó Á¢¼ÓÇÒ¶§¸¶´Ù
´Ù¸£°Ô ÁÖ´À³Ä¿¡ µû¶ó °íÁ¤, À¯µ¿IP°¡ µÇ´Â °ÍÀ̱¸¿ä.
À¯µ¿ ip¶óµµ ÀÏ´Ü Çѹø Á¢¼ÓÇϸé ip´Â º¯ÇÏÁö ¾Ê½À´Ï´Ù.
(2) ¿ÜºÎ¿¡¼ º¼¶§ ip°¡ ÀÚ²Ù ¹Ù²î³ª¿ä?
- À¯µ¿ IP¶ó¸é ¸Å¹ø Á¢¼ÓÇÒ¶§¸¶´Ù ¹Ù²î°ÚÁ®..
- µÎ·ç³Ý °°Àº °æ¿ì ÄÄÇ»Å͸¦ ÄÓ¶§¸¶´Ù ¹Ù²ò´Ï´Ù.
²ô±â Àü±îÁø ¹Ù²îÁö ¾ÊÁ®..
(3) acceptÇÒ¶§ ¹Þ¾ÆµÎ¾ú´ø SOCKADDR ¸»¾¸ÇϽôÂÁö?
- ¸ÞÀÎ ¼¹ö¿¡ Á¢¼ÓÇÑ ¼ÒÄÏÀ» ´ë»óÀ¸·Î GetSockName()ÇØ¼ ¾òÀº ip¸¦ ¸»ÇÕ´Ï´Ù
- ±×³É ÀÚ½ÅÀÇ ip¸¦ gethostname()ÇØ¼ ¾òÀº ip¸¦ »ç¿ëÇØµµ µÇÁö¸¸
³×Æ®¿÷ Ä«µå°¡ 2°³ ²ÈÇôÀÖ´Â °æ¿ì ³»ºÎ³»Æ®¿÷ ÁÖ¼Ò·Î ÀâÈ÷´õ±º¿ä.
À̸¦ ¸·À¸·Á¸é ¸ÞÀμ¹ö¿¡ Á¢¼ÓÇÑ ¼ÒÄÏÀÇ ip¸¦ getsockname()À¸·Î ¾ò¾î¼
¹æÀå ¼¹ö ¼ÒÄÏÀ» »ý¼ºÇÒ¶§ ¾îµå·¹½º¸¦ NULL·Î ÁÖÁö¸»°í À§¿¡¼ ¾òÀº
ip¸¦ ÁÖ¸é µË´Ï´Ù.
(4) ¾îÄÉÇÏ´Â °ÇÁö ±¸Ã¼ÀûÀ¸·Î´Ù°¡^^;;?
- ´õ ÀÌ»ó ±¸Ã¼ÀûÀΰÍÀº ¼³¸íµå¸®±â Èûµé°í ³ª¸ÓÁö ¼¼¼¼ÇÑ ºÎºÐÀº °ü·Ã¼ÀûÀ»
Âü°íÇϽñ⠹ٶø´Ï´Ù.
(5) ´Ù½Ã ³Ñ°ÜÁÖ´Â ÀÌÀ¯°¡ ¹«¾ùÀÎÁö?
- ´Ù¸¥ »ç¶÷ÀÌ ¹æÀå¿¡°Ô Á¢¼ÓÇÏ·Á¸é ¹æÀåÀÇ ip¸¦ ¾Ë°í ÀÖ¾î¾ßÇϴµ¥
À̸¦ ¾Ë°í ÀÖ¾î¾ß ÇÏ´Â °ÍÀº ¸ÞÀÎ ¼¹öÀ̹ǷΠ¹æÀåÀº ÀÚ½ÅÀÇ ¼¹ö ip¸¦
¸ÞÀÎ ¼¹ö¿¡°Ô ¾Ë·ÁÁà¾ßÇÒ Àǹ«°¡ ÀÖ°í ¸ÞÀÎ ¼¹ö´Â ¹æÀå¿¡°Ô Á¢¼ÓÇÏ·Á´Â
´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ¸ÞÀμ¹ö°¡ ¹æÀåÀÇ ip¸¦ ¾Ë·ÁÁà¾ßÇÒ Àǹ«°¡ ÀÖÁ®.
p.S ±×³É ªÀº ±â°£µ¿¾È Á¦°¡ °æÇèÇÑ °ÍÀ» Åä´ë·Î ¸»¾¸µå¸®´Â °ÍÀ̶ó¼
ºÒÇÕ¸®Çϰųª À߸øµÈ Á¡ÀÌ ÀÖÀ»¼öµµ ÀÖ½À´Ï´Ù.
¸¸ÀÏ Æ²¸®°Å³ª °³¼±ÇؾßÇÒ »çÇ×ÀÌ ÀÖ´Ù¸é ÁöÀûÇØÁÖ½Ã¸é °í¸¿°Ú½À´Ï´Ù.
À¯µ¿ IPÀÇ °æ¿ì ´Ü¼øÈ÷ PPP¼ºñ½º¸¦ »ç¿ëÇÏ´Â ÀüÈÁ¢¼Ó »ç¿ëÀÚ »Ó¾Æ´Ï¶ó
DHCP°°Àº ¼ºñ½º¸¦ ÀÌ¿ëÇϴ ȸ»ç¿¡¼µµ À¯µ¿ IPÀÔ´Ï´Ù.
DHCP¼¹ö´Â IP¸¦ Áß¾Ó¿¡¼ °ü¸®ÇØ ÁÖ´Â ¿ªÇÒÀ» Çϴµ¥
´ë±â¾÷ °°Àº ´ë±Ô¸ðÀÇ »ç¹«½Ç¿¡¼´Â DHCP¸¦ ¾²´Â °æ¿ìµµ ¸¹´õ±º¿ä.
ÀÌ·±°æ¿ì »ç¿ëÀÚ°¡ Á¢¼ÓÇÒ¶§ ¸¶´Ù IP°¡ ¹Ù²î°Ô µË´Ï´Ù.
»ç¿ëÀÚ°¡ IP¸¦ °ü¸®ÇÒ Çʿ䰡 ¾ø¾îÁö´Â ÀåÁ¡¶§¹®ÀÌÁÒ.
ÀϺΠÄÉÀÌºí ¸ðµ©¿¡¼µµ »ç¿ëÀÚ¸¦ DHCP·Î °ü¸®ÇÑ´Ù°í ÇÏ´õ±º¿ä.
°×¹æ¿¡¼µµ DHCP¸¦ ¾µ ¼ö ÀÖ°Ú±º¿ä.
IP°ü¸®°¡ Áß¾Ó¿¡¼ µÈ´Ù´Â ÀåÁ¡Àº PC¸¦ ±ò¶§¸¶´Ù ÀÏÀÏÀÌ ¼ÂÆÃÇÏ´Â ¹ø°Å·Î¿òÀ»
¸·¾ÆÁִϱî¿ä.
±×·³.
__
À̰游
ÇÏÀÌÅÚ½Ä À¯µ¿¾ÆÀÌÇÇ´Â proxy¿¡ ÀÇÇØ Á¤ÇØÁö´Â IPÀ̱⿡, ÇÏÀÌÅÚ·Î ÀÎÅͳÝÀ» Á¢
¼ÓÇÑ »ç¿ëÀÚÀÇ IP¿Í ¿ÜºÎ¿¡¼ÀÇ ±× »ç¿ëÀÚ¿¡ ´ëÇÑ IP°¡ ¼·Î ´Ù¸£±â¿¡, "Àý´ë!
Àý´ë!" ¼¹ö°¡ µÉ ¼ö ¾ø´Ù°í ¾Ë°í ÀÖ½À´Ï´Ù. (Çϱä..¾î¶² ¹ÌÄ£³ðÀÌ Àüȼ¼ µé¿©
°¡¸ç 24½Ã°£ ¿¬°áÇÑ ¼¹ö¸¦ µ¹¸±±î¿ä..?)
±×·±µ¥..ADSLÀ̳ª µÎ·ç³Ý°°Àº °æ¿ì¿¡¼ ¾ð±ÞµÇ´Â À¯µ¿ IP´Â proxy¿¡ ÀÇÇØ ±¸¶óÄ¡
´Â IP°¡ ¾Æ´Ñ ½ÇÁ¦ IPÀΰ¡¿ä?
GetQueuedCompletionStatus()ÇÒ¶§ º¸¸é
send°¡ ¿Ï·áµÈ ½ÃÁ¡À̳ª recv°¡ ¿Ï·áµÈ ½ÃÁ¡ ¸ðµÎ ÀÌ ÇÔ¼ö¿¡ °É·Áµå´Âµ¥
ÀÌ °æ¿ì¿¡ Àß º¸³Â´Ü ¼Ò¸°Áö Àß ¹Þ¾Ò´Ü ¼Ò¸°Áö ±¸ºÐÇÒ ¹æ¹ýÀÌ ¾ø³ª¿ä?
¹Ù·Î Á÷Àü¿¡ send¸¦ Çß´Â ±× ´ÙÀ½¿¡ recvÇÑ »óŶó¸é À̰Š»ó´çÈ÷ ¸ðÈ£
Çϳ׿ä.
´äº¯Á» ºÎʵ右´Ï´Ù.
completion port¾²½Ã´Â ºÐ ¾ø³ª¿ä? µµ¹«Áö ÀÚ·á°¡ ¾ø¾î¼ ¸·¸·..
completion port & overlappped i/o·Î ¼ÒÄÏ ÇÁ·Î±×·¥À» Â¥°í ÀÖ½À´Ï´Ù.
wsarecv¸¦ ÇØµÎ°í GetQue...()·Î À̺¥Æ® ¹ß»ý½Ã¸¶´Ù ó¸®Çϰí Àִµ¥
ÇÑÂü µ¹¸®´Ù º¸¸é WSARecv()¿¡¼ ¿¡·¯°¡ ³³´Ï´Ù.
¿¡·¯Äڵ带 ã¾Æº¸´Ï...
#define WSAENOBUFS 10055L
// An operation on a socket could not be performed because the system lacked
sufficient buffer space or because a queue was full.
ÀÌ·¸°Ô ³ª¿ÍÀÖ±º¿ä.
±×·±µ¥ recv¶õ°Ô ³»ºÎ Å¥¿¡¼ µ¥ÀÌŸ¸¸ »Ì¾Æ¿À´Â°Ô ¾Æ´Ï´ø°¡¿ä?
ÀÌ ¿¡·¯°¡ ¿Ö ³ª´ÂÁö ÀÌÇØ¸¦ ¸øÇϰڳ׿ä.
¾Æ½Ã´Â ºÐ ´äº¯Á» ºÎʵ右´Ï´Ù.
Á¦°¡ ¾Ë±â·Ð, IOCP´Â recv,send,WSASend,WSARecv¸¦ ½á¼ ¼Û¼ö½ÅÇÑ°Ç Ã³¸® ¿Ï·á¸¦
°¨ÁöÇÏÁö ¸øÇÑ´Ù°í ¾Ë°í ÀÖ°í, ½ÇÁ¦·Îµµ ±×·¸½À´Ï´Ù.
±×·±µ¥.. ±×°É·Î IOCP°¡ µÈ´Ù°í¿ä?
Áö³ ÀÏÁÖÀϰ£ ¼Ò½º¸¦ Ȧµü µÚÁý¾î¾þ°í »±À̸¦ Ä£ ³¡¿¡ compeltion port i/o
·Î ½Ï ¹Ù²å½À´Ï´Ù.
´ëÃæ..½ºÆ®·¹½º Å×½ºÆ®¶ó°í ÇÒ°Ç ¾øÁö¸¸ Å×½ºÆ®¸¦ ÇØº» °á°ú...
À©µµ¿ì ºñµ¿±â¼ÒÄÏÀ» ½èÀ»¶§º¸´Ù ¸Þ½ÃÁö ó¸® ¼Óµµ°¡ È®½ÇÈ÷ 2¹èÀÌ»ó »¡
¶óÁ³½À´Ï´Ù.
cpuºÎ´ãµµ ¾öû ÁÙ°í...ÀÌ°Ç ¸Þ½ÃÁö ±â¹ÝÀ϶§µµ ±¦ÂúÀº ¼öÁØÀ̾úÁö¸¸...
ºÐ»ê¼¹ö ¸ðµ¨À̰í Ŭ¶óÀÌ¾ðÆ® ¹°¸®´Â ¿¡ÀÌÀüÆ® ÂÊ¿¡ ÀÌ ¹æ½ÄÀ» ¾²°í
Àִµ¥ ÀÏ´Ü ¸î½Ê°³ Á¤µµÀÇ Å¬¶óÀÌ¾ðÆ®°¡ Á¢¼ÓÇØ¼ 50¹Ð¸®¼¼ÄÁµå °£°Ý
À¸·Î °è¼ÓÇØ¼ ¸Þ½ÃÁö¸¦ º¸³¾¶§ µð½ºÇ÷¹À̸¸ ¾ÈÇϸé cpuÁ¡À¯À²ÀÌ °ÅÀÇ
0%¿¡ °¡±õ±º¿ä.
ÂÁ.¹«´ë»Ç·Î ±¸ÇöÇÏ´Ùº¸´Ï ¾ÆÁ÷ ºÒ¾ÈÇÑ ºÎºÐÀÌ Á» ÀÖ±ä Çѵ¥...
÷¿£ ¾ÈÁ¤¼º¿¡¼ »ó´çÈ÷ ¹®Á¦°¡ ¸¹¾Ò´Âµ¥ (ÀÏ´Ü ½º·¹µå°¡ µÎ°³¾¿À̳ª ´õ µ¹
´Ùº¸´Ï...) ¼Õº¸´Ù º¸´Ï ÀÌÀüÀÇ ºñµ¿±âº¸´Ùµµ ¿ÀÈ÷·Á ¾ÈÁ¤¼ºÀÌ ³ªÀºµí
Çϱº¿ä.
¿¹Á¦µµ Àû°í ¿ø¼,ÇÛÇÁ¿¡¼ ÀÌÇØ ¸øÇÒ ¸»µéµµ ¸¹¾Æ¼ ²Ï Çì¸Ì´Âµ¥
ÀÌÁ¦´Â ¾µ ¼ö ÀÖÀ» Á¤µµ·Î ±¸ÇöµÈ°Å °°½À´Ï´Ù.
¿ÀÈ÷·Á ±âÁ¸ ¹æ½ÄÀ» ¾²´ø ³»ºÎ ¼¹ö°¡ ´Ù¿îµÇ´Â Çö»óÀÌ...
¾ÆÀÌ°í ¾ÕÀ¸·Î ¾ó¸¶³ª ´õ »±À̸¦ ÃľßÇÒÁö..»ê³Ñ¾î »êÀÔ´Ï´Ù.
Àú´Â IOCP¸¦ ¼ö½Å󸮿¡¸¸ »ç¿ëÇß½À´Ï´Ù. ±×·¯¹Ç·Î, GetQueud..ÇÔ¼ö¸¦ ¾²°í ³
°á°ú´Â Ç×»ó ¼ö½Å¿¡ °üÇÑ °ÍÀÌ¶ó °¡Á¤Çß½À´Ï´Ù. ±×·¡¼, ¼Û¼ö½Å µÎ°³¸¦ ¸ðµÎ ±â
´Ù¸®´Â 󸮿¡ ´ëÇÑ ±¸º°À» ÇÏ´Â ¹æ¹ýÀº ½ÃµµÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
±×.
·¯.
³ª..
Á÷Á¢ ÇØº»°ÍÀº ¾Æ´ÏÁö¸¸, Á¦°¡ ¹æ¹ýÀ» Çϳª Á¦½ÃÇÏÁÒ. ´ë½Å, Á÷Á¢ ÇØº¸½Ã°í, Àß
µÇ´ÂÁö ¿©ºÎ¸¦ °Ô½ÃÆÇ¿¡ ¿Ã·ÁÁÖ¼¼¿ä. Àúµµ ±Ã±ÝÇϱº¿ä..
BOOL GetQueuedCompletionStatus(
HANDLE CompletionPort, // the I/O completion port of interest
LPDWORD lpNumberOfBytesTransferred,
// to receive number of bytes
// transferred during I/O
LPDWORD lpCompletionKey, // to receive file's completion key
LPOVERLAPPED *lpOverlapped, // to receive pointer to OVERLAPPED
// structure
DWORD dwMilliseconds // optional timeout value
);
IOCPÀÇ ±× À¯¸íÇÑ APIÁÒ. ÀÌ ÇÔ¼ö¿¡¼ µð¹ÙÀ̽º ¿Ï·á À̺¥Æ®¸¦ ±â´Ù¸®ÁÒ. ±×·±
µ¥, µð¹ÙÀ̽º ¿Ï·á¸¦ ±¸º°ÇÏ´Â ÀÎÀÚ´Â.. lpCompletionKey,lpOverlapped µÑ »ÓÀÔ
´Ï´Ù.
lpCompletionKey´Â »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ ¾Æ¹« °ªÀ̳ª µé¾î°¥ ¼ö ÀÖ½À´Ï´Ù. ¼ÒÄÏ ¹ø
È£, Ŭ¶óÀÌ¾ðÆ® ¿ÀºêÁ§Æ® ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ µî ¾Æ¹«°Å³ªÁÒ. ±×·¸Áö¸¸, À̰͸¸ °®
°í´Â ¼Û½ÅÀ» ÇѰÇÁö, ¼ö½ÅÀ» ÇѰÇÁö ã±â°¡ Èûµì´Ï´Ù. ´Ù¸¥ ¿¹Á¦¸¦ º¸´Ï±î, Ŭ¶ó
ÀÌ¾ðÆ® ±¸Á¶Ã¼ °´Ã¼¸¦ À§ÇØ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¶§ ¾à 1¹ÙÀÌÆ® ´õ Å©°Ô ÀâÀº ´ÙÀ½,
±× ±¸Á¶Ã¼¸¦ ¸Þ¸ð¸®¿¡ ÃʱâÈÇϵÇ, ÃʱâÈÇÏ´Â À§Ä¡¸¦ ¹Ýµå½Ã '¦¼ö ÁÖ¼Ò'·Î ¸¸
µç ´ÙÀ½, IOCP¸¦ °É¶§ ¼Û½ÅÀÌ¸é ±× °´Ã¼ÀÇ Â¦¼ö ÁÖ¼Ò¸¦, ¼ö½ÅÀ̸é Ȧ¼ö ÁÖ¼Ò¸¦
³Ñ±â´Â ²Ç¼ö¸¦ ½á¼ À̰ÍÀ» ±¸º°ÇÑ °Íµµ ÀÖ´õ±º¿ä.
Á¦°¡ ½ÃµµÇغ¸¶ó°í ¿äûÇÏ´Â°Ç ÀÌ°Ç ¾Æ´Ï°í.. È®½ÇÈ÷ µÇ´Â ¹æ¹ýÀÌÁö¸¸, ÇÁ·Î±×·¥
ÀÌ ´õ·¯¿öÁöÀݾƿä? ÀÌÁ¦ ¾ê±âÇÏ·Á´Â µÎ¹øÂ° ÀÎÀÚ lpOverlappedÀÔ´Ï´Ù.
¸¸¾à ¼ÒÄÏ ¼Û¼ö½ÅÀ» ReadFile,WriteFileÀ» ÀÌ¿ëÇÏ´Â °æ¿ì, ¸¶Áö¸· ÀÎÀÚ·Î
OVERLAPPED ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ³Ñ±âÁÒ. ¿ì¼±, ¼Û¼ö½Å °¢°¢À» À§ÇÑ ÀÌ ±¸Á¶Ã¼ µÎ
°³¸¦ ¸¶·ÃÇØ³õ°í(´ç¿¬È÷ µÎ°³ ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò´Â ¼·Î ´Ù¸£°ÚÁÒ.) ¼Û¼ö½ÅÀ» °É ¶§
ÀÌ µÎ°³ÀÇ ÁÖ¼Ò¸¦ ÀÎÀÚ·Î ³Ñ±é´Ï´Ù. ³ªÁß¿¡ ¼Û¼ö½Å 󸮰¡ ¿Ï·áµÇ¸é GetQueued..
ÇÔ¼ö¿¡¼ lpOverlapped¿¡¼ µÑ Áß ÇϳªÀÇ ÁÖ¼Ò¸¦ ¸®ÅÏÇÒ°Ì´Ï´Ù. ±×·¸°Ô¸¸ µÈ´Ù
¸é, ±× ÁÖ¼Ò°¡ ¼Û½Å¿¡ °üÇÑ OVERLAPPEDÀÎÁö, ¼ö½Å¿¡ °üÇÑ °ÇÁö¸¦ ±¸º°ÇÏ´Â°Ç ½Ä
ÀºÁ× ¸Ô±âÁÒ..
ÇÔ ÇØº¸¼¼¿ä. ±×¸®°í °á°ú¸¦ º¸°íÇØÁֽðí¿ä.
±×·³ À̸¸..
Áö³ÁÖ¿¡ ³»³» ¸Å´Þ·Á¼ ´ëÃæ ±¸ÇöÀ» ÇØ³ù´Âµ¥ ¼Û¼ö½Å üũ´Â
lpoverlappedµÚ¿¡´Ù Ç÷¡±×¸¦ Çϳª µÖ¼ ±×°É·Î üũÇß±¸¿ä.
¼Û¼ö½Å ¿Ï·á..¶ó±â º¸´Ùµµ sendÇÏ°í ³ª¼ ±× °á°ú°¡ Getque...·Î
³Ñ¾î¿À´øµ¥¿ä.
wsasend¸¦ »ç¿ëÇß°í ¹°·Ð overlapped·Î...
¿©Æ° ±×·±½ÄÀ¸·Î µ¹¸®°í Àִµ¥ ÀÏ´Ü ±× ºÎºÐ¿¡ ´ëÇØ¼± ¾î´À Á¤µµ
¾ÈÁ¤ÀÌ µÇ¾ú°í Àß µ¹¾Æ°¡³×¿ä.
»ùÇÃÀ¸ Å×½ºÆ®ÇغÁµµ send´ÙÀ½¿¡ send¿¡ ´ëÇÑ °á°ú (10¹ÙÀÌÆ® sendÇØ¼
3¹ÙÀÌÆ® º¸³Â¾îÁ³´Ù¸é 3¹ÙÀÌÆ®°¡ ÀÎÀÚÀÇ dword°ª¿¡ Æ÷ÇԵǴ ½Ä)°¡
³ª¿À´õ±º¿ä.
Á¦°¡ ¾Ë°í ÀÖ´Â°Ç µÎ·ç³ÝÀÇ °æ¿ì ÀÔ´Ï´Ù.
Àúµµ µÎ·ç³Ý°ü·Ã ÀÏÀ» ÇÒ¶§ µéÀº ³»¿ëÀ̶ó¼
Á÷Á¢ È®ÀÎÀº ÇØº¸Áö ¾Ê¾Ò½À´Ï´Ù.(ÄÉÀÌºí ¸ðµ©À» »ç¿ëÇϽô ºÐÀÌ ´õ Á¤È®ÇÑ ´äÀ»
ÁֽǼö ÀÖ°ÚÁÒ.)
µÎ·ç³Ý °°Àº °æ¿ì DHCP¼¹ö¸¦ »ç¿ëÇØ¼ À¯µ¿ IP¸¦ ¹Þ°Ô µË´Ï´Ù.
ÀÌ°Ç µÎ·ç³Ý ÄÉÀÌºí ¸ðµ©À» Ä×À»¶§ ¹Þ¾Æ¿À´Â °ÍÀ¸·Î ÄÄÀ» ÄÑ°í ²ô´Â
°Í¿¡ »ó°ü¾øÀÌ ÄÉÀÌºí ¸ðµ©À» ÄÑ°í ²ô´Â °Í¿¡ µû¶ó
IP°¡ ºÎ¿©µÇ´Â°ÍÀÌÁÒ. ±×·¸±â ¶§¹®¿¡ IP°¡ ¹Ù²î´Â ÀÏÀÌ »ý°¢ º¸´Ù
ÀÚÁÖ ÀÖÁö ¾Ê½À´Ï´Ù. (±×·¡¼ µÎ·ç³Ý À¯ÀúÁß¿¡ ºÒ¹ý FTP½ÎÀÌÆ®¸¦
¿î¿µÇÏ´Â À¯Àúµéµµ ¸¹ÁÒ ^^; ÇÏÁö¸¸ ÀÌ°Ç ÄÉÀÌºí ±¸Á¶»ó ¹Ù¶÷Á÷ÇÑ ¹æ¹ýÀº
¾Æ´ÏÁö¸¸¿ä.)
Proxy´Â IP¿Í´Â ½ÇÁúÀûÀÎ °ü°è°¡ ¾ø½À´Ï´Ù.(ÄÉÀÌºí ±¸Á¶¿¡¼± ij½¬¼¹ö ¿ªÇÒ¸¸
ÇØÁÖÁÒ. ISP±îÁöÀÇ ¼Óµµ°¡ ISP¿ÜºÎÀÇ ¼Óµµ¿¡ ºñÇØ ¾öû ºü¸£´Ï±î Áß°£¿¡
ij½¬¼¹ö°¡ ISP³»ºÎ¿¡ ÀÖ´Ù¸é ´ç¿¬È÷ È¿À²ÀÌ ³ô¾ÆÁö°ÚÁÒ. ±×·¡¼ »ç¿ëÀÚ¿¡°Ô
ÇÁ¶ô½Ã¸¦ ¾²¶ó°í ÇÏ´Â °ÍÀÌÁÒ. ¸¹Àº ÄÉÀ̺í ISP¿¡¼ ¸»ÀÌÁÒ.)
±×¸®°í ½ÇÁ¦ IPÀÇ ¿©ºÎ´Â ´ç¿¬ÇϰԵµ ½ÇÁ¦ IPÀÔ´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é
ÀÎÅÍ³Ý ¼ºñ½ºÀÇ ¸¹Àº ºÎºÐÀ» ¸ø¾²°ÚÁÒ.
Á¦°¡ ¾Ë±â·Î´Â ´Ü¸»±¹¸¶´Ù DHCP ¼¹ö°¡ ÀÖ°í °Å±â¿¡ IP°¡ ¿©·¯°³ ÇÒ´çµÇ¾î ÀÖ°í
À¯Àú°¡ Á¢¼ÓÇϸé DHCP¼¹ö¿¡¼ ¹Þ¾Æ¿À´Â °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù.
DHCP¼¹öÀÇ ¼ÂÆÃ¿¡ µû¶ó À¯Àú¿¡°Ô °íÁ¤µÈ IP¸¦ ºÎ¿©ÇÏ´Â ¹æ¹ýµµ Àִ°ÍÀ¸·Î ¾Ë°í
ÀÖ½À´Ï´Ù. ±×·¸°Ô ÇÏ´ÂÁö´Â ¼ºñ½º ¾÷üÀÇ Á¤Ã¥¿¡ µû¶ó ´Ù¸£°Ú³×¿ä.
ÀϺη¯ ¼¹ö¸¦ ¸¸µçÁö ¸øÇÏ°Ô ÇϱâÀ§ÇØ IP¸¦ °è¼Ó ¹Ù²Ü ¼öµµ ÀÖ°í¿ä.
±×·³ Âü°íÇϽñæ.
__
À̰游