Overlapped I/O ¸ðµ¨
 FrontPage|FindPage|TitleIndex|RecentChanges|UserPreferences E D R S P I M H RSS

Network Game ProgrammingNetwork LibraryOffice CD ¸¸µé±âOpenSSLOverlapped I/O ¿Í IOCP Programming › OverlappedIO¸ðµ¨
<!> UnderConstruction

Contents:
1 °³¿ä
2 °ü·Ã¼­Àû
3 Áֿ丵ũ
4 Overlapped I/O ¶õ?
5 Overlapped I/O ¿Ï·á ÅëÁö ó¸® ¹æ¹ý
5.1 Event Object ¸¦ ÀÌ¿ëÇÑ ¹æ¹ý
5.2 Completion Routine À» ÀÌ¿ëÇÑ ¹æ¹ý
5.2.1 SleepEx() ÇÔ¼ö
6 ¼­¹ö ±¸Çö
6.1 ó¸® °úÁ¤
7 Ŭ¶óÀÌ¾ðÆ® ±¸Çö
7.1 ó¸® °úÁ¤
8 ´Ù¿î·Îµå
9 °ü·Ã¸µÅ©


1 °³¿ä #


Overlapped I/O ¸ðµ¨Àº IOCP ¸¦ Á¦¿ÜÇÑ Winsock ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾î¶² I/O ¸ðµ¨ º¸´Ù ¶Ù¾î³­ ¼º´ÉÀ» ¹ßÈÖÇÑ´Ù. ¶ÇÇÑ IOCP ¿Í´Â ´Þ¸® À©µµ¿ìÁî CE ¸¦ Á¦¿ÜÇÑ ¸ðµç À©µµ¿ìÁî Ç÷§Æû¿¡¼­ »ç¿ë °¡´ÉÇÏ´Ù. Overlapped I/O ¸ðµ¨Àº ºñµ¿±âÀûÀ¸·Î Çϳª ÀÌ»óÀÇ I/O ÀÛ¾÷À» µ¿½Ã¿¡ ¼öÇàÇÒ ¼ö Àֱ⠶§¹®¿¡ ³ôÀº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù.


2 °ü·Ã¼­Àû #


  • Network Programming for Microsoft Windows - 2nd Edition
    • Anthony Jones.Jim Ohlund °øÀú, ±è³²½Ä ¿ª, Á¤º¸¹®È­»ç

  • ¿­Ç÷°­ÀÇ TCP/IP ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö
    • À±¼º¿ì Àú, ÇÁ¸®·º

3 Áֿ丵ũ #



4 Overlapped I/O ¶õ? #



<±×¸² 1> ºñ Overlapped I/O ó¸®
Network/Non-Overlapped.gif


<±×¸² 2> Overlapped I/O ó¸®
Network/Overlapped.gif


5 Overlapped I/O ¿Ï·á ÅëÁö ó¸® ¹æ¹ý #


5.1 Event Object ¸¦ ÀÌ¿ëÇÑ ¹æ¹ý #


5.2 Completion Routine À» ÀÌ¿ëÇÑ ¹æ¹ý #



5.2.1 SleepEx() ÇÔ¼ö #


SleepEx() ÇÔ¼ö´Â Sleep() ÇÔ¼ö¿Í µ¿ÀÏÇÏ°Ô ÁöÁ¤µÈ ½Ã°£¸¸Å­ È£ÃâÇÑ ¾²·¹µå¸¦ ´ë±â ( Suspend ) »óÅ·Π¸¸µç´Ù. ÇÏÁö¸¸ ´ÙÀ½°ú °°Àº °æ¿ì¿¡ È£ÃâÇÑ ¾²·¹µå¸¦ ½ÇÇà »óÅ·ΠµÇµ¹¸°´Ù.

  • ÀÔÃâ·Â ( I/O ) °¡ ¿Ï·áµÇ¾î Äݹé ( Callback ) ÇÔ¼ö°¡ È£Ã⠵ǾúÀ» °æ¿ì
  • APC ( Asynchronous Procedure Call ) ÀÌ ¾²·¹µå Queue ¿¡ µé¾î¿ÔÀ» °æ¿ì
  • ÁöÁ¤µÈ ½Ã°£ÀÌ °æ°ú µÇ¾úÀ» °æ¿ì

DWORD SleepEx(
	DWORD dwMilliseconds,
	BOOL bAlertable
);

ÀÌ ÇÔ¼öÀÇ ¹Ýȯ°ªÀº ´ÙÀ½°ú °°´Ù.

  • ÁöÁ¤µÈ ½Ã°£ÀÌ °æ°ú µÇ¾úÀ» °æ¿ì, 0 ( Zero ) ¸¦ ¹ÝȯÇÑ´Ù.
  • bAlertable °¡ TRUE ·Î ¼³Á¤µÇ°í ÀÔÃâ·ÂÀÌ ¿Ï·áµÈ ÈÄ Äݹé ÇÔ¼ö°¡ È£Ã⠵ǾúÀ» °æ¿ì WAIT_IO_COMPLETION À» ¹ÝȯÇÑ´Ù.

»ç¿ëÇϴµ¥ À־ ÁÖÀÇ ÇØ¾ßÇÒ °ÍÀº ÀÔÃâ·Â ÇÔ¼ö¸¦ È£ÃâÇÑ ¾²·¹µå¿¡¼­ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ bAlertable °¡ TRUE ·Î ¼³Á¤µÇÁö ¾ÊÀ» °æ¿ì, Äݹé ÇÔ¼ö°¡ È£ÃâµÇÁö ¾Ê°Å³ª APC °¡ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ ¾²·¹µå°¡ Á¾·áµÇÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ßÇÑ´Ù.

Âü°í> APC ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â MSDN ÀÇ [http]QueueUserAPC ÇÔ¼ö ¼³¸íÀ» ÂüÁ¶ ÇÑ´Ù.


6 ¼­¹ö ±¸Çö #


6.1 ó¸® °úÁ¤ #


  1. ƯÁ¤ Æ÷Æ®·Î ¿¬°áÀ» ±â´Ù¸± ¼ö ÀÖ´Â ¼ÒÄÏÀ» »ý¼ºÇÑ´Ù ( WSASocket(), bind(), listen() ).
  2. ¿¬°á ¿äûÀ» ¹Þ¾ÆµéÀδ٠( accept() ).
  3. ¿¬°á¿¡ ´ëÇÑ ¼ÒÄÏÀ» À§ÇÑ WSAOVERLAPPED ±¸Á¶Ã¼ÀÇ °´Ã¼¸¦ »ý¼ºÇÑ´Ù. À̺¥Æ® ¿ÀºêÁ§Æ®¸¦ WSAOVERLAPPED ±¸Á¶Ã¼ÀÇ °´Ã¼¿¡ ÇÒ´çÇϰí WSAWaitForMultipleEvents() ¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÒ À̺¥Æ® °´Ã¼ÀÇ ¹è¿­¿¡µµ »ðÀÔÇÑ´Ù.
  4. WSAOVERLAPPED ±¸Á¶Ã¼¸¦ ¸Å°³ º¯¼ö·Î Àü´ÞÇÏ¿© WSARecv()/WSASend() ¸¦ È£ÃâÇÑ´Ù.
  5. À̺¥Æ® ¹è¿­¿¡ ´ëÇÏ¿© WSAWaitForMultipleEvents() ¸¦ È£ÃâÇÏ¿© I/O ÀÛ¾÷ÀÌ ¿Ï·áµÇ±â¸¦ ±â´Ù¸°´Ù.
  6. I/O ÀÛ¾÷ÀÌ ¿Ï·áµÇ¸é WSAGetOverlappedResult() ¸¦ È£ÃâÇÏ¿© °á°ú¸¦ È®ÀÎÇÑ´Ù.
  7. WSAResetEvent() ¸¦ ÀÌ¿ëÇÏ¿© À̺¥Æ® ¿ÀºêÁ§Æ®ÀÇ »óŸ¦ ¸®¼Â½ÃŲ´Ù. ¿Ï·áµÈ I/O ÀÛ¾÷¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÑ´Ù.
  8. ´Ù¸¥ I/O ÀÛ¾÷À» WSARecv()/WSASend() È£ÃâÇÏ¿© ½ÃÀÛÇÑ´Ù.
  9. 5 ~ 8 ÀÇ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.

7 Ŭ¶óÀÌ¾ðÆ® ±¸Çö #


7.1 ó¸® °úÁ¤ #


  1. ¿¬°áÇÒ ¼ÒÄÏÀ» »ý¼ºÇÑ´Ù ( WSASocket() ).
  2. ¼­¹ö·Î ¿¬°áÀ» ¿äûÇÑ´Ù ( connect() ).
  3. ¿¬°á¿¡ ´ëÇÑ ¼ÒÄÏÀ» À§ÇÑ WSAOVERLAPPED ±¸Á¶Ã¼ÀÇ °´Ã¼¸¦ »ý¼ºÇÑ´Ù. À̺¥Æ® ¿ÀºêÁ§Æ®¸¦ WSAOVERLAPPED ±¸Á¶Ã¼ÀÇ °´Ã¼¿¡ ÇÒ´çÇϰí WSAWaitForMultipleEvents() ¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÒ À̺¥Æ® °´Ã¼ÀÇ ¹è¿­¿¡µµ »ðÀÔÇÑ´Ù.
  4. WSAOVERLAPPED ±¸Á¶Ã¼¸¦ ¸Å°³ º¯¼ö·Î Àü´ÞÇÏ¿© WSARecv()/WSASend() ¸¦ È£ÃâÇÑ´Ù.
  5. À̺¥Æ® ¹è¿­¿¡ ´ëÇÏ¿© WSAWaitForMultipleEvents() ¸¦ È£ÃâÇÏ¿© I/O ÀÛ¾÷ÀÌ ¿Ï·áµÇ±â¸¦ ±â´Ù¸°´Ù.
  6. I/O ÀÛ¾÷ÀÌ ¿Ï·áµÇ¸é WSAGetOverlappedResult() ¸¦ È£ÃâÇÏ¿© °á°ú¸¦ È®ÀÎÇÑ´Ù.
  7. WSAResetEvent() ¸¦ ÀÌ¿ëÇÏ¿© À̺¥Æ® ¿ÀºêÁ§Æ®ÀÇ »óŸ¦ ¸®¼Â½ÃŲ´Ù. ¿Ï·áµÈ I/O ÀÛ¾÷¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÑ´Ù.
  8. ´Ù¸¥ I/O ÀÛ¾÷À» WSARecv()/WSASend() È£ÃâÇÏ¿© ½ÃÀÛÇÑ´Ù.
  9. 5 ~ 8 ÀÇ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.

8 ´Ù¿î·Îµå #



9 °ü·Ã¸µÅ© #



SubCategoryNetwork

EditText|FindPage|DeletePage|LikePages| Valid XHTML 1.0! Valid CSS! powered by MoniWiki