WSAAccept
WSAAccept ÇÔ¼ö´Â Á¶°ÇÇÔ¼ö(condition function)ÀÇ ¹Ýȯ°ª¿¡ ±â¹ÝÀ» µÎ¾î Á¢¼ÓÀ» Á¶°ÇÀûÀ¸·Î Çã¿ëÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
SOCKET WSAAccept (
SOCKET s,
struct sockaddr FAR * addr,
LPINT addrlen,
LPCONDITIONPROC
lpfnCondition,
DWORD dwCallbackData
);
Parameters
s
[ÀÔ·Â] listen ÇÔ¼ö¸¦ È£ÃâÇØ¼ Á¢¼Ó¿äûÀ»
°¨ÁöÇϱâ À§ÇÑ ¸®½¼¼ÒÄÏÀÇ ±â¼úÀÚ
addr
[Ãâ·Â] Á¢¼ÓµÇ´Â ´ë»ó¿¡ ´ëÇÑ ¾îµå·¹½º¸¦
¼ö½ÅÇÒ ¹öÆÛÀÇ Æ÷ÀÎÅÍ Á¤È®ÇÑ addr ¸Å°³º¯¼öÀÇ ÇüÅ´ ¼ÒÄÏÀÌ »ý¼ºµÉ ¶§ ¾îµå·¹½º
ÁýÇÕ(family)¿¡ ÀÇÇØ¼ °áÁ¤µË´Ï´Ù.
addrlen
[ÀÔ·Â/Ãâ·Â] ¾îµå·¹½º¸¦ ¾ò¾î¿Ã addr
ÀÇ ±æÀ̸¦ °¡Áö°í ÀÖ´Â Á¤¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ
lpfnCondition
[ÀÔ·Â] Á¶°ÇÀ» ó¸®ÇÏ´Â ÇÁ·Î½ÃÁ®¿¡
´ëÇÑ ¾îµå·¹½º Æ÷ÀÎÅÍ·Î½á ¾îÇø®ÄÉÀ̼ÇÀº È£ÃâÀÚÀÇ ¸Å°³º¯¼ö Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ÇÏ¿©
Á¢¼ÓÀÇ Çã¿ë/ÇØÁ¦¸¦ °áÁ¤ÇÏ°ÔµÉ Á¶°ÇÇÔ¼ö¸¦ Á¦°øÇÏ°Ô µË´Ï´Ù.
dwCallbackData
[ÀÔ·Â] ÄÝ¹é µ¥ÀÌÅÍ´Â Á¶°ÇÇÔ¼öÀÇ
dwCallbackData ¸Å°³º¯¼öÀÇ °ªÀ¸·Î ¾îÇø®ÄÉÀ̼ÇÀ¸·Î Àü´ÞµË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â
À©µµÁî ¼ÒÄÏ¿¡ ÀÇÇØ¼ º¯È¯µÇÁö ¾Ê½À´Ï´Ù.
Remarks
WSAAccept ÇÔ¼ö´Â ¼ÒÄÏ s ¿¡ Á¢¼ÓÀ» À§ÇØ Á¢¼ÓÅ¥¿¡ ´ë±âÇϰí Àִ ù ¹øÂ° Á¢¼Ó¿äûÀ» ¾ò¾î³»°í, ÁöÁ¤µÈ Á¶°ÇÇÔ¼ö¿¡ ¸ÂÀº Á¢¼Ó¿äûÀ» üũÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ¸¸¾à Á¶°ÇÇÔ¼ö°¡ CF_ACCEP¸¦ ¹ÝȯÇÑ´Ù¸é, WSAAccept ÇÔ¼ö´Â »õ·Î¿î ¼ÒÄÏÀ» »ý¼ºÇϰí, Á¶°ÇÇÔ¼öÀÇ °á°ú ¸Å°³º¯¼ö g °¡ °¡¸®Å°´Â ¼ÒÄÏÀ» ±×·ìÇÎÇÏ´Â ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. »õ·Î »ý¼ºµÈ ¼ÒÄÏÀº WSAAsyncSelect ÇÔ¼ö³ª WSAEventSelect ÇÔ¼ö·Î ºñµ¿±â À̺¥Æ®°¡ µî·ÏµÈ ¼ÒÄÏ s ¿Í °°Àº ¼Ó¼ºÀ» °¡Áö°Ô µË´Ï´Ù. ÇÏÁö¸¸, ¸®½¼¼ÒÄÏÀÇ ±×·ì ¾ÆÀ̵𸦠Æ÷ÇÔÇÏÁö´Â ¾Ê½À´Ï´Ù.
¸¸¾à Á¶°Ç ÇÔ¼ö°¡ CF_REJECT¸¦ ¹ÝȯÇÑ´Ù¸é, WSAAccept ÇÔ¼ö´Â Á¢¼Ó¿äûÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê°Ô µË´Ï´Ù. Á¶°ÇÇÔ¼ö´Â WSAAccept ÇÔ¼ö°¡ µ¿ÀÛÇÏ´Â ¾²·¹µå »ó¿¡¼ ¼öÇàµÇ°í, °¡´ÉÇÑ »¡¸® ±× °á°ú¸¦ ¹Ýȯ ÇÕ´Ï´Ù. ¸¸¾à Á¢¼ÓÀ» Çã¿ëÇÒ °ÇÁö ¾Æ´ÑÁö ÇÏ´Â ÆÇ´ÜÀ» ¹Ù·Î ¾Ë¾Æ³¾ ¼ö ¾ø´Ù¸é, Á¶°ÇÇÔ¼ö´Â CF_DEFER ¶ó°í ÇÏ´Â ¾ÆÁ÷ °áÁ¤ÀÌ ³ªÁö ¾Ê¾Ò´Ù ¶ó´Â °ªÀ» ¹ÝȯÇÏ°Ô µË´Ï´Ù. À̶§ ¾î¶»ÇÑ ¾×¼Çµµ ÀϾÁö ¾Ê½À´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÌ Á¢¼Ó¿ä±¸¿¡ ´ëÇØ¼ ¾×¼ÇÀ» °¡Á®¿Ã ¼ö ÀÖµµ·Ï Áغñ°¡ µÇ¾úÀ» ¶§, WSAAccept ÇÔ¼ö´Â ´Ù½ÃÇѹø ¼öÇàÇϰí CF_ACCEPT³ª CF_REJECT ÁÖ¿¡ Çϳª°¡ Á¶°ÇÇÔ¼ö·ÎºÎÅÍ ¹ÝȯµÇ°Ô µË´Ï´Ù.
µðÆúÆ® ¸ðµå(µ¿±â¸ðµå)»ó¿¡¼, Á¢¼Ó ´ë±â Å¥¿¡ ¾Æ¹«·± Á¢¼Ó¿äûÀÌ ¾øÀ» ¶§ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸é, Á¢¼Ó¿ä±¸°¡ µé¾î¿Ã ¶§ ±îÁö ¾îÇø®ÄÉÀ̼ÇÀ» ºí·ÏÅ· »óÅ¿¡ ºüÁö°Ô µÉ °ÍÀÔ´Ï´Ù. ¹Ý¸é¿¡ ºñµ¿±â ¸ðµå »ó¿¡¼ ÀÌ¿Í ¶È°°Àº »óȲ¿¡¼ WSAAccept ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸é, ¼ÒÄÏÀº WSAEWOULDBLOCK ¿¡·¯Äڵ带 ³»¸é¼ ½ÇÆÐÇÏ°Ô µË´Ï´Ù. WSAAccept ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾î, »õ·Î¿î ¼ÒÄÏÇÚµéÀ» ¹ÝȯÇÏ°Ô µÇ°ÚÁÒ? À̶§ »õ·Î »ý¼ºµÇ´Â ¼ÒÄÏÀº ´Ù¸¥ Á¢¼Ó ¿ä±¸¸¦ ¹Þ¾ÆµéÀÌ´Â ¼ÒÄÏÀº ¾Æ´Õ´Ï´Ù. ¸Ó~ ´ç¿¬ÇÑ °Å´Ï±î ±»ÀÌ ºÎ¿¬¼³¸íÀº ´ÞÁö ¾Ê°Ú½À´Ï´Ù.
addr ¸Å°³º¯¼ö´Â Åë½Å°èÃþ¿¡¼ ¾Ë ¼ö ÀÖ´Â ÇüÅÂÀÇ Á¢¼ÓÁ¤º¸¿¡ ´ëÇÑ ¾îµå·¹½º °á°ú¸¦ ¾ò¾î³¾ ¸Å°³º¯¼öÀÔ´Ï´Ù. addr ¸Å°³º¯¼öÀÇ Á¤È®ÇÑ ÇüÅ´ Åë½ÅÀÌ ¹ß»ýÇÏ´Â ¾îµå·¹½º ÁýÇÕ¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù. addrlen ¸Å°³º¯¼ö´Â ÇÔ¼ö ÀԷ¿ëÀ¸·Î »ç¿ëµÉ ¶§´Â addr ¸Å°³º¯¼ö°¡ ¸Þ¸ð¸®»ó¿¡ Â÷ÁöÇÏ´Â Å©±â¸¦ °¡Áöµµ·Ï ÇØ¼ ³Ñ°Ü¾ß ÇÕ´Ï´Ù. Ãâ·Â¿ëÀ¸·Î »ç¿ëÇÒ °æ¿ì ÀÌ °ªÀº addr ¸Å°³º¯¼ö¿¡ ½ÇÁúÀûÀ¸·Î Æ÷ÇÔµÈ ¾îµå·¹½ºÀÇ ±æÀÌ(¹ÙÀÌÆ®)¸¦ °¡Áö°Ô µË´Ï´Ù. ÀÌ ÇÔ¼öÀÇ È£ÃâÀº SOCK_STREAM°ú °°Àº Á¢¼ÓÁöÇâ ¼ÒÄÏ¿¡¼ »ç¿ëµË´Ï´Ù. ¸¸¾à addr À̳ª addrlen ÀÌ NULLÀ̶ó¸é, Á¢¼ÓµÈ ¼ÒÄÏÀÇ ¿ø°ÝÁö ¾îµå·¹½º Á¤º¸´Â ¾ò¾î³»Áö ¸øÇÏ°Ô µË´Ï´Ù.
Á¶°ÇÇÔ¼ö(condition function)ÀÇ ¿øÇü(prototype)Àº ¾Æ·¡¿Í °°½À´Ï´Ù.
int CALLBACK ConditionFunc(
IN LPWSABUF lpCallerId,
IN LPWSABUF lpCallerData,
IN OUT LPQOS lpSQOS,
IN OUT LPQOS lpGQOS,
IN LPWSABUF lpCalleeId,
OUT LPWSABUF lpCalleeData,
OUT GROUP FAR * g,
IN DWORD dwCallbackData
);
ÇÁ·ÎÅäŸÀÔ¿¡ ´ëÇÑ ¼³¸íÀº »ý·« ÇϰڽÀ´Ï´Ù. ¿Ö³Ä±¸¿ä? ÀÌÁ¦ ¹ø¿ªÇϱⰡ Èûµå³×¿ä. ¼ÓÀÌ ´Ù ¸Þ½»°Å·Á¿©. ¾ðÁ¦ »ý°¢³ª¸é, ÀÌ¾î¼ ÇØ¾ß°Ú½À´Ï´Ù. ¿ÏÀü "Ùí-Ã¥ÀÓ" ÀÇ ±ØÄ¡¸¦ ´Þ¸®´Â±º¿ä. ļļļ~
Return Values
ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾ú´Ù¸é, WSAAccept ÇÔ¼ö´Â Á¢¼ÓÇã¿ëµÈ ¼ÒÄÏÀÇ ±â¼úÀÚ¸¦ °¡Áø SOCKET ŸÀÔÀÇ °ªÀ» ¹Ýȯ ÇÒ °ÍÀÔ´Ï´Ù. ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì INVALID_SOCKETÀ» ¹ÝȯÇÒ °ÍÀ̰í, WSAGetLastError ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ƯÁ¤ÇÑ ¿¡·¯Äڵ带 °Ë»ö ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Error Codes
WSANOTINITIALISED | ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱâ ÀÌÀü¿¡ WSAStartup ÇÔ¼ö¸¦ ¼º°øÀûÀ¸·Î È£ÃâÇØ¾ß ÇÕ´Ï´Ù. |
WSAECONNREFUSED | Á¢¼Ó¿ä±¸°¡ Á¶°ÇÇÔ¼öÀÇ ¸®Åϰª¿¡ ¸í½ÃµÈ °Í(CF_REJECT) ó·³ °Á¦ÀûÀ¸·Î Çã¿ëÇÏÁö ¸øÇÏ°Ô µÇ¾î¹ö·È½À´Ï´Ù. |
WSAENETDOWN | ³×Æ®¿÷ ¼ºê ½Ã½ºÅÛ¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù. |
WSAEFAULT | addrlen ¸Å°³º¯¼ö°¡ ³Ê¹« À۰ųª addr À̳ª lpfnCondition °ø°£ÀÌ Á¦´ë·Î ÇÒ´çµÇ¾î »ç¿ëÇÒ ¼ö ÀÖ´Â ¿µ¿ªÀÌ ¾Æ´Õ´Ï´Ù. |
WSAEINTR | ºí·°Å· À©¼Ó v1.1 ÀÌ WSACancelBlockingCall ÇÔ¼ö¿¡¼ Ãë¼ÒµÇ¾ú½À´Ï´Ù |
WSAEINPROGRESS | ºí·°Å· À©¼Ó v1.1 ÀÌ ÇöÀç ÁøÇà ÁßÀÔ´Ï´Ù. |
WSAEINVAL | WSAAccept ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¸ÕÀú ¼º°øÀûÀÎ listen ÇÔ¼ö°¡ ¼öÇàµÇÁö ¾Ê¾Ò°Å³ª, Á¶°ÇÇÔ¼ö¿¡ ¸í½ÃµÈ ¸Å°³º¯¼ö g°¡ ¿Ã¹Ù¸¥ °ªÀÌ ¾Æ´Ï°Å³ª, ÇÏ¿©Æ° ¸Å°³º¯¼ö¸¦ À߸ø½á¼ ÀÏ¾î³ ¿¡·´´Ï´Ù. |
WSAEMFILE | »ç¿ë°¡´ÉÇÑ ¼ÒÄÏ ±â¼úÀÚ°¡ ³²¾ÆÀÖÁö ¾Ê°Å³ª »ç¿ëÇÒ ¼ö Àִ ť°¡ ºñ¾îÀÖÁö ¾Ê½À´Ï´Ù. |
WSAENOBUFS | »ç¿ë°¡´ÉÇÑ ¹öÆÛ°ø°£ÀÌ ¾ø½À´Ï´Ù. |
WSAENOTSOCK | ÁöÁ¤µÈ ¼ÒÄÏÀÌ ¿Ã¹Ù¸¥ ¼ÒÄÏ ±â¼úÀÚ°¡ ¾Æ´Õ´Ï´Ù. |
WSAEOPNOTSUPP | Âü°íÇϵµ·Ï ³Ñ°ÜÁØ ¼ÒÄÏÀÌ Á¢¼ÓÁöÇâÇü ŸÀÔÀÇ ¼ÒÄÏÀÌ ¾Æ´Õ´Ï´Ù. |
WSATRY_AGAIN | Á¢¼ÓÇã¿ë¿ä±¸°¡ Á¶°ÇÇÔ¼öÀÇ ¹Ýȯ°ª(CF_DEFER)ÀÌ °¡¸®Å°´Â °Í ó·³ ¹Ù·Î °á°ú¸¦ ³»¾î ÁÙ ¼ö ¾ø¾î ¿¬±âµÇ¾ú´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. |
WSAEWOULDBLOCK | ºñµ¿±â ¼ÒÄÏ¿¡¼ Á¢¼ÓÀ» ¿ä±¸ÇÑ ¼ÒÄÏÀÌ Á¢¼Ó´ë±âÅ¥¿¡ Çϳªµµ ³²¾ÆÀÖÁö ¾Ê½À´Ï´Ù. |
WSAEACCES | Á¢¼Ó¿ä±¸°¡ ½Ã°£Ãʰú°¡ µÇ¾ú°Å³ª, Ãë¼ÒµÇ¾ú½À´Ï´Ù. |
QuickInfo
Windows NT : »ç¿ë°¡´É
Windows :
»ç¿ë°¡´É
Windows CE : Áö¿øµÇÁö ¾ÊÀ½
Header
:
Win16/32
: winsock.h
Win32-II
: winsock2.h
Import Library :
Win16 : winsock.lib
Win32
: wsock32.lib
Win32-II
: ws2_32.lib
overview, accept, bind, connect, getsockopt, listen, select, socket, WSAAsyncSelect, WSAConnect