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