recv

recv ÇÔ¼ö´Â Á¢¼ÓµÇ¾î ÀÖ´Â ¼ÒÄÏÀ¸·ÎºÎÅÍ µé¾î¿À´Â µ¥ÀÌÅ͸¦ ¼ö½ÅÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.

int recv (
        SOCKET   s,
        char FAR*   buf,
        int   len,
        int   flags
);

 

Parameters

s
[ÀÔ·Â] Á¢¼ÓµÈ ¼ÒÄÏÀ» ¸í½ÃÇÏ´Â ±â¼úÀÚ(descriptor)ÀÔ´Ï´Ù.

buf
[Ãâ·Â] ¼ö½Å¹ÞÀº µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¹öÆÛÀÔ´Ï´Ù.

len
[ÀÔ·Â] ¹öÆÛÀÇ ±æÀ̸¦ ¸í½ÃÇÕ´Ï´Ù.

flags
[ÀÔ·Â]
recv ÇÔ¼öÀÇ ±âº»ÀÛ¾÷(¼ö½Å¹ÞÀº µ¥ÀÌÅ͸¦ Å¥¿¡¼­ Àо°í Á¦°ÅÇÏ´Â ÀÛ¾÷)ÀÌ ¾Æ´Ñ ´Ù¸¥ ÀÛ¾÷À» ÇÏ°Ô Çϱâ À§ÇØ ÀÌ Ç÷¡±×¸¦ ¼³Á¤ÇÕ´Ï´Ù.

Remarks

recv ÇÔ¼ö´Â Á¢¼Ó ÁöÇâÇü ¼ÒÄÏ(connection-oriented socket)À̳ª ºñÁ¢¼Ó ÁöÇâÇü ¼ÒÄÏ(connectionless socket)¿¡¼­ ¼ö½ÅµÇ´Â µ¥ÀÌÅ͸¦ ÀбâÀ§ÇØ »ç¿ëµË´Ï´Ù. Á¢¼ÓÁöÇâÇü ÇÁ·ÎÅäÄÝ(connection-oriented protocol)À» »ç¿ë ÇÒ ¶§, ¼ÒÄÏÀº recv ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¹Ì¸® Á¢¼ÓµÈ »óÅ¿©¾ß ÇÕ´Ï´Ù. ºñÁ¢¼Ó ÇÁ·ÎÅäÄÝ(connectionless protocol)À» »ç¿ë ÇÒ °æ¿ì, ¼ÒÄÏÀº recv ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¹Ì¸® ¹ÙÀÎµå µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.

ÀÌ ÇÔ¼ö¸¦ ¾²±â Àü¿¡, ¼ÒÄÏÀÇ ·ÎÄà ¾îµå·¹½º¸¦ ¾Ë¾Æ³»¾ß Çϴµ¥¿ä. ¼­¹ö ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ¸í½ÃÀûÀÎ(explicit) bind ÇÔ¼ö³ª accept ¶Ç´Â WSAAccept ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ¾Ë¾Æ ³À´Ï´Ù. ÀÌ·¯ÇÑ ¸í½ÃÀûÀÎ(explicit) ¹ÙÀεùÀ» Ŭ¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇßÀ» ¶§ ÁÁÁö ¾ÊÀº °á°ú¸¦ ³¾ ¼ö ÀÖ½À´Ï´Ù. Ŭ¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇØ, ¼ÒÄÏÀº connect, WSAConnect, sendto, WSASendTo, ¶Ç´Â WSAJoinLeaf ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ ¹¬½ÃÀûÀ¸·Î ·ÎÄà ¾îµå·¹½º¸¦ ¹ÙÀεå ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Á¢¼ÓµÈ ¶Ç´Â Á¢¼ÓµÇÁö ¾ÊÀº ¼ÒÄÏ¿¡ ´ëÇؼ­ ÀÌ ÇÔ¼ö´Â ¼ö½ÅµÈ ¸Þ½ÃÁö°¡ Çã¿ëµÈ °÷À¸·Î ºÎÅÍÀÇ ¾îµå·¹½º¸¦ Á¦ÇÑÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¸í½ÃµÈ ¿ø°ÝÁö ÁּҷκÎÅÍ ¸Þ½ÃÁö¸¦ ¹ÝȯÇϱ⸸ ÇÕ´Ï´Ù. ´Ù¸¥ ÁÖ¼Òµé·Î ºÎÅÍÀÇ ¸Þ½ÃÁö´Â (»ì¸ç½Ã?) ¹ö¸³´Ï´Ù. (Çؼ®ÀÌ ³Ñ ÀÌ»ó ÇÕ´Ï´Ù... ¾Æ·¡¿¡ ¿ø¹®À» ÷°¡ Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù. Áö¼º~)

<¿ø¹®³»¿ë>
For connected or connectionless sockets, this function restricts the addresses from which received messages are accepted. The function only returns messages from the remote address specified in the connection. Messages from other addresses are (silently) discarded

Á¢¼Ó ÁöÇâÇü ¼ÒÄÏ(connection-oriented socket : ex:SOCK_STREAM)ÀÏ °æ¿ì¿¡, recv ÇÔ¼ö´Â ÀÌ¿ë °¡´ÉÇÑ ¸¹Àº Á¤º¸¸¦ ¹Ýȯ ÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à ¾ÆÁ÷ ÀÐÇôÁöÁö ¾ÊÀº out-of-band µ¥ÀÌÅÍ°¡ ³²¾ÆÀÖ°í, ¼ÒÄÏÀÌ out-of-band µ¥ÀÌÅÍÀÇ ÀζóÀÎ ¼ö½ÅÀ» ÇÒ ¼ö ÀÖ´Ù¸é(ÀÌ·² °æ¿ì ¼ÒÄϿɼÇÀÌ SO_OOBINLINEÀ¸·Î ¼³Á¤µÇ¾î ÀÖ¾î¾ß °ÚÁÒ?), out-of-band µ¥ÀÌÅÍ´Â Àп©Áú °ÍÀÔ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ´õ ÀбâÀ§ÇØ ³²¾ÆÀÖ´Â out-of-band µ¥ÀÌÅÍ°¡ ÀÖ´ÂÁö ¾ø´ÂÁö È®ÀÎÇϱâ À§ÇØ ioctlsocket À̳ª WSAloctlÀÇ SIOCATMARK Äĸǵ带 »ç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ºñÁ¢¼Ó ¼ÒÄÏ(connectionless sockets : ex. SOCK_DGRAM ¶Ç´Â ´Ù¸¥ ¸Þ½ÃÁö ÁöÇâÇü ¼ÒÄÏ(message-oriented sockets))ÀÏ °æ¿ì µ¥ÀÌÅÍ´Â connect ÇÔ¼ö¿¡ ÀÇÇؼ­ ¸í½ÃµÈ ¸ñÀû ¾îµå·¹½º·ÎºÎÅÍ ³¯¶ó¿Â, ¸Þ½ÃÁö Å¥¿¡ ½×¿©Áø µ¥ÀÌÅͱ׷¥Áß Ã¹ ¹ø° µ¥ÀÌÅͱ׷¥À» Àоî³À´Ï´Ù.

µ¥ÀÌÅÍ ±×·¥À̳ª ¸Þ½ÃÁö°¡ ÁöÁ¤µÈ ¹öÆÛ Å©±âº¸´Ù ´õ Ŭ °æ¿ì¿¡´Â µ¥ÀÌÅͱ׷¥ÀÇ Ã¹ ¹ø° ºÎºÐºÎÅÍ Ã¤¿öÁö°í, recv ÇÔ¼ö´Â WSAEMSGSIZE ¶ó´Â ¿¡·¯Äڵ带 ¹ß»ý½Ãŵ´Ï´Ù. UDP ¿Í °°ÀÌ µ¥ÀÌÅÍÀÇ ½Å·Ú¼ºÀ» º¸ÀåÇÒ ¼ö ¾ø´Â ÇÁ·ÎÅäÄÝÀÇ °æ¿ì ÃÊ°úµÈ µ¥ÀÌÅÍ´Â ¼Õ½ÇµÇ°Ô µË´Ï´Ù. TCP¿Í °°ÀÌ ½Å·ÚÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ °æ¿ì µ¥ÀÌÅÍ´Â ÃæºÐÈ÷ Å« ¹öÆÛ¸¦ °¡Áö°í recv ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ¼öÇà µÉ ¶§ ±îÁö ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ¿¡ ÀÇÇؼ­ ³²°ÜÁö°Ô µË´Ï´Ù.

¸¸¾à ¼ö½ÅÇÒ µ¥ÀÌÅÍ°¡ ¾ø°ÔµÇ¸é, recv ÇÔ¼ö´Â ¼ö½ÅÇÒ µ¥ÀÌÅÍ°¡ µé¾î ¿Ã ¶§±îÁö ºí·ÏÅ· »óÅ¿¡ °É¸³´Ï´Ù.

¼ÒÄÏÀÌ Á¢¼ÓÁöÇâÇü(connected oriented) ÀÌ°í ¿ø°ÝÁö ÁöÁ¡¿¡¼­ Á¢¼ÓÀÌ ¼Ë´Ù¿î(¿ì¾ÆÇÑ(gracefully) Á¾·á) µÇ¾î ¹ö¸®°í, ÇöÀç ±× ¿ø°ÝÁö¿¡¼­ º¸³½ µ¥ÀÌÅ͸¦ ¼ö½ÅµÇ°í ÀÖ´Â »óŶó¸é, recv ÇÔ¼ö´Â µ¥ÀÌÅ͸¦ Çϳªµµ ¹ÞÁö ¸øÇÑ »óÅ¿¡¼­ µ¿ÀÛÀ» ¿Ï·áÇÕ´Ï´Ù. Á¢¼ÓÀÌ ¸®¼Â µÇ¾î ¹ö¸° °æ¿ì¿£ WSAECONNRESET À̶ó´Â ¿¡·¯Äڵ带 ¹ß»ýÇϸç ÇÔ¼öÀÇ ¼öÇàÀº ½ÇÆÐ ÇÏ°Ô µË´Ï´Ù.

flag ¸Å°³º¯¼ö´Â ¼ÒÄÏ¿¡ ´ëÇØ ¸í½ÃµÈ ¿É¼Ç ÀÌ»óÀÇ ÇÔ¼öµ¿ÀÛ¿¡ ¿µÇâÀ» ¹ÌÄ¡±â À§Çؼ­ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼öÀÇ ÀǹÌü°è´Â ¼ÒÄÏ¿É¼Ç ±×¸®°í, flag ¸Å°³º¯¼ö¿¡ ÀÇÇؼ­ °áÁ¤µÇ¾î Áý´Ï´Ù. flag ¸Å°³º¯¼ö¸¦ ÀÌ¿ëÇÑ ¹æ¹ýÀÇ °æ¿ì ¾Æ·¡ÀÇ °ªÀ» OR ºñÆ®¿¬»êÀ» ÃëÇؼ­ ±¸¼ºµÇ¾î Áý´Ï´Ù. Áï, ½±°Ô ¸»Çؼ­ recv ÇÔ¼ö°¡ ±âº»ÀûÀ¸·Î ¼öÇàÇÏ´Â ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ ÀÏ°í ¼ö½ÅÅ¥¿¡¼­ Á¦°ÅÇÏ´Â ÀÏ ÀÌ¿ÜÀÇ ¿øÇÏ´Â ´Ù¸¥ 󸮸¦ ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â Ç÷¡±× ¶ó´Â ÀǹÌÀÔ´Ï´Ù.

Value Meaning
MSG_PEEK MSG_PEEK Ç÷¡±×´Â ¼ö½ÅÅ¥¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ Àб⸸ ÇÏ´Â ÀÛ¾÷À» ÇÏ°Ô ÇÕ´Ï´Ù. µ¥ÀÌÅÍ´Â ´ÜÁö Àо ƯÁ¤ÇÑ ¹öÆÛ·Î º¹»ç°¡ °¡´ÉÇÏÁö¸¸, ¼ö½Å Å¥¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ Á¦°ÅÇÏÁö´Â ¾Ê½À´Ï´Ù.
MSG_OOB MSG_OOB Ç÷¡±×´Â out-of-band µ¥ÀÌÅÍÀÇ Ã³¸®¿¡ »ç¿ëµË´Ï´Ù.

Return Values

¿¡·¯°¡ ¹ß»ýÇÏÁö ¾ÊÀ¸¸é, recv ÇÔ¼ö´Â ÀÐÇôÁø µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ¹Ýȯ ÇÕ´Ï´Ù. ¸¸¾à Á¢¼ÓÀÌ Á¾·á(¿ì¾ÆÇÑÁ¾·á) µÇ¾ú´Ù¸é, 0À» ¹Ýȯ ÇÏ°Ô µË´Ï´Ù. ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì SOCK_ERROR °ªÀÌ ¹Ýȯ µÇ¸ç, WSAGetLastError ÇÔ¼ö¸¦ ÀÌ¿ëÇØ Æ¯Á¤ÇÑ ¿¡·¯ Äڵ带 ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

Error Codes

WSANOTINITIALISED

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀÎ WSAStartup ÇÔ¼öÀÇ È£ÃâÀÌ ¾ø¾ú½À´Ï´Ù.

WSAENETDOWN ³×Æ®¿÷ ¼­ºê ½Ã½ºÅÛ¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.
WSAEFAULT buf ¸Å°³º¯¼ö°¡ Á¦´ë·Î µÈ ÇüÅ°¡ ¾Æ´Õ´Ï´Ù.
WSAENOTCONN ¼ÒÄÏÀÌ Á¢¼ÓµÈ »óÅ°¡ ¾Æ´Õ´Ï´Ù.
WSAEINTR ºí·ÏÅ· È£ÃâÀÌ WSACancelBlockingCall ÇÔ¼ö¿¡¼­ Ãë¼ÒµÇ¾ú½À´Ï´Ù.
WSAEINPROGRESS ºí·°Å· À©¼Ó v1.1 ÀÌ ÇöÀç ÁøÇà ÁßÀ̰ųª, ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ Äݹé ÇÔ¼ö¸¦ ¿©ÀüÈ÷ ó¸®ÇÏ°í ÀÖ½À´Ï´Ù.
WSAENETRESET ¿¬»êÀÌ ÁøÇàµÇ°í ÀÖ´Â µµÁß Á¢¼ÓÀÌ ²÷°Ü¹ö·È½À´Ï´Ù.
WSAENOTSOCK ±â¼úÀÚ(descriptor)°¡ ¼ÒÄÏÀÌ ¾Æ´Õ´Ï´Ù.
WSAEOPNOTSUPP MSG_OOB °¡ ¸í½ÃµÇ¾úÁö¸¸, ¼ÒÄÏÀº SOCK_STREAM °ú °°Àº ÇüÅÂÀÇ ½ºÆ®¸² ÇüÅ°¡ ¾Æ´Õ´Ï´Ù.
WSAESHUTDOWN ¼ÒÄÏÀÌ ¼Ë´Ù¿î µÇ¾ú½À´Ï´Ù.
WSAEWOULDBLOCK ¼ÒÄÏÀÌ ³Íºí·ÏÅ·(ºñµ¿±â)·Î ¸¶Å·µÇ¾î ÀÖ°í, ¼ö½Å ¿¬»êÀÌ ºí·ÏÅ· »óÅÂÀÔ´Ï´Ù.
WSAEMSGSIZE ¼ö½ÅµÈ ¸Þ½ÃÁö°¡ ÁöÁ¤µÈ ¹öÆÛ¿¡ ÀúÀåÇϱ⿡ ³Ê¹« Ä¿¼­ ¼Õ½Ç µÇ¾ú½À´Ï´Ù.
WSAEINVAL ¼ÒÄÏÀÌ bind ÇÔ¼ö¿¡ ÀÇÇؼ­ ¹ÙÀÎµå µÇÁö ¾Ê¾Ò°Å³ª, ¾Ë ¼ö ¾ø´Â Ç÷¡±×°¡ »ç¿ëµÇ¾ú°Å³ª, SO_OOBINLINE ¿É¼ÇÀ» °¡´ÉÇÏ°Ô ÇÑ »óÅ ¿¡¼­ MSG_OOB Ç÷¡±×°¡ ¼ÒÄÏ¿¡ ´ëÇؼ­ ¸í½ÃµÇ¾ú½À´Ï´Ù. ¶Ç´Â len ¸Å°³º¯¼ö°¡ 0 À̰ųª 0º¸´Ù ÀÛ½À´Ï´Ù.
WSAECONNABORTED °¡»ó ¿¬°á ȸ·Î¸ÁÀÌ Å¸ÀӾƿôÀ̳ª ´Ù¸¥ ½ÇÆÐ ¶§¹®¿¡ ²÷¾îÁ® ¹ö·È½À´Ï´Ù.
WSAETIMEDOUT Á¢¼ÓÀÌ ³×Æ®¿÷ ½ÇÆгª »ó´ë¹æ ½Ã½ºÅÛÀÇ ÀÀ´ä ½ÇÆзΠÀÎÇÏ¿© µå¶ø µÇ¾î ¹ö·È½À´Ï´Ù.
WSAECONNRESET °¡»ó ȸ·Î¸ÁÀÌ ¿ø°ÝÁö¿¡¼­ "hard"³ª "abortive" Á¾·á¸¦ ¼öÇàÇؼ­ ¸®¼ÂµÇ¾ú½À´Ï´Ù.

QuickInfo

Windows NT : »ç¿ë°¡´É
Windows : »ç¿ë°¡´É
Windows CE : ¹öÁ¯ 1.0 ±×¸®°í ±×ÀÌÈÄÀÇ ¹öÁ¯¿¡¼­ »ç¿ë°¡´É
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, recvfrom, select, send, socket, WSAAsyncSelect, WSARecvEx