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

See Also

overview, accept, bind, connect, getsockopt, listen, select, socket, WSAAsyncSelect, WSAConnect