recvfrom

recvfrom ÇÔ¼ö´Â ¼ÒÄÏÀ¸·ÎºÎÅÍ µ¥ÀÌÅͱ׷¥À» ¼ö½ÅÇÏ°í, °ü·ÃµÈ ¾îµå·¹½º ¹× Æ÷Æ® ¹øÈ£¸¦ ¹Ýȯ ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.

int recvfrom (
        SOCKET   
s,
        char FAR*   
buf,
        int  
 len,
        int   
flags,
        struct sockaddr FAR*   
from,
        int FAR*  
 fromlen
);

 

Parameters

s
[ÀÔ·Â] ¹ÙÀεåµÈ ¼ÒÄÏÀ» ±â¼úÇÏ´Â ½Äº°ÀÚ(descriptor)ÀÔ´Ï´Ù.

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

len
[ÀÔ·Â] ¹öÆÛÀÇ ±æÀÌ

flags
[ÀÔ·Â] ÇÔ¼öÀÇ È£Ãâ·Î ¾î¶² ÀÛ¾÷À» ÇÒ °ÇÁö ¸í½ÃÇÏ´Â Ç÷¡±×ÀÔ´Ï´Ù.

from
[Ãâ·Â] ¼ö½Å¹ÞÀº µ¥ÀÌÅ͸¦ ¼Û½ÅÇÑ ´Ü¸»ÀÇ ¾îµå·¹½º¸¦ ¸®ÅϹޱâ À§ÇÑ ¹öÆÛ Æ÷ÀÎÅÍÀÔ´Ï´Ù.

fromlen
[ÀÔ/Ãâ·Â]
from ¹öÆÛÀÇ »çÀÌÁ À§ÇÑ Æ÷ÀÎÅÍ ÀÔ´Ï´Ù.

Remarks

recvfrom ÇÔ¼ö´Â Á¢¼ÓµÈ ¼ÒÄÏ°ú Á¢¼ÓµÇÁö ¾ÊÀº ¼ÒÄÏ¿¡¼­ ¼ö½ÅµÇ´Â µ¥ÀÌÅ͸¦ ÀÐ°í µ¥ÀÌÅ͸¦ º¸³½°÷ÀÇ ÁÖ¼Ò¸¦ ¾ò¾î³»´Â ÇÔ¼öÀÔ´Ï´Ù.  ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ¼ÒÄÏÀÇ ·ÎÄà ¾îµå·¹½º¸¦ ¾Ë¾Æ¾ß Çϴµ¥, ¼­¹ö ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ¸í½ÃÀûÀÎ bind ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ¾Ë¾Æ³À´Ï´Ù. ÀÌ·¯ÇÑ ¸í½ÃÀûÀÎ(explicit) ¹ÙÀεùÀº Ŭ¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ë ÇßÀ» ¶§ ÁÁÁö ¾ÊÀº °á°ú¸¦ ³¾ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϴ Ŭ¶óÀ̾ðÆ® ¾îÇÁ¸®ÄÉÀ̼ÇÀº sendto, WSASendTo ¶Ç´Â WSAJoinLeaf ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ ¹¬½ÃÀûÀ¸·Î ·ÎÄà ¾îµå·¹½º¸¦ ¹ÙÀεå ÇÒ ¼ö ÀÖ½À´Ï´Ù.

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

¸Þ½ÃÁö ÁöÇâÇü ¼ÒÄÏ(message-oriented sockets))ÀÏ °æ¿ì µ¥ÀÌÅʹ ù ¹ø°·Î ÀúÀåµÈ ¸Þ½ÃÁö¸¦ ¹öÆÛÅ©±â ¸¸Å­ Àоî³À´Ï´Ù. µ¥ÀÌÅÍ ±×·¥À̳ª ¸Þ½ÃÁö°¡ ÁöÁ¤µÈ ¹öÆÛ Å©±âº¸´Ù ´õ Ŭ °æ¿ì¿¡´Â µ¥ÀÌÅͱ׷¥ÀÇ Ã¹ ¹ø° ºÎºÐºÎÅÍ Ã¤¿öÁö°í, recvfrom ÇÔ¼ö´Â WSAEMSGSIZE ¶ó´Â ¿¡·¯Äڵ带 ¹ß»ý½Ãŵ´Ï´Ù. UDP ¿Í °°ÀÌ µ¥ÀÌÅÍÀÇ ½Å·Ú¼ºÀ» º¸ÀåÇÒ ¼ö ¾ø´Â ÇÁ·ÎÅäÄÝÀÇ °æ¿ì ÃÊ°úµÈ µ¥ÀÌÅÍ´Â ¼Õ½ÇµÇ°Ô µË´Ï´Ù.

¸¸¾à from ¸Å°³º¯¼ö°¡ 0ÀÌ ¾Æ´Ï°í, ¼ÒÄÏÀÌ Á¢¼ÓÁöÇâÇüÀÌ ¾Æ´Ï¶ó¸é, µ¥ÀÌÅ͸¦ º¸³½ »ó´ë¹æ(peer)ÀÇ ³×Æ®¿÷ ¾îµå·¹½º´Â SOCKADDR ±¸Á¶Ã¼ÀÎ from¿¡ ÀúÀåµË´Ï´Ù. fromlen ¸Å°³º¯¼ö´Â SOCKADDR ±¸Á¶Ã¼ÀÇ Å©±â¸¦ °Ç³×ÁÖ°Ô µÇ°í, ¹Ýȯ ÇÒ ¶§´Â SOCKADDR ±¸Á¶Ã¼¿¡ ÀúÀåµÈ ½ÇÁ¦ ¾îµå·¹½º Å©±â¸¦ µÇµ¹¸³´Ï´Ù.

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

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

flag ¸Å°³º¯¼ö´Â recvfrom ÇÔ¼ö°¡ ±âº»ÀûÀ¸·Î ¼öÇàÇÏ´Â ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ ÀÏ°í ¼ö½ÅÅ¥¿¡¼­ Á¦°ÅÇÏ´Â ÀÏ ÀÌ¿ÜÀÇ ¿øÇÏ´Â ´Ù¸¥ 󸮸¦ ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â Ç÷¡±×ÀÔ´Ï´Ù. ÀÌ Ç÷¡±×¿¡´Â ¾Æ·¡¿Í °°Àº °ªÀÌ »ç¿ëµË´Ï´Ù.

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

Return Values

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

Error Codes

WSANOTINITIALISED

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

WSAENETDOWN ³×Æ®¿÷ ¼­ºê ½Ã½ºÅÛ¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.
WSAEFAULT buf ¸Å°³º¯¼ö°¡ Á¦´ë·Î µÈ ÇüÅ°¡ ¾Æ´Õ´Ï´Ù.
WSAEINTR ºí·ÏÅ· È£ÃâÀÌ WSACancelBlockingCall ÇÔ¼ö¿¡¼­ Ãë¼ÒµÇ¾ú½À´Ï´Ù.
WSAEINPROGRESS ºí·°Å· À©¼Ó v1.1 ÀÌ ÇöÀç ÁøÇà ÁßÀ̰ųª, ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ Äݹé ÇÔ¼ö¸¦ ¿©ÀüÈ÷ ó¸®ÇÏ°í ÀÖ½À´Ï´Ù.
WSAEINVAL ¼ÒÄÏÀÌ bind ÇÔ¼ö¿¡ ÀÇÇؼ­ ¹ÙÀÎµå µÇÁö ¾Ê¾Ò°Å³ª, ¾Ë ¼ö ¾ø´Â Ç÷¡±×°¡ »ç¿ëµÇ¾ú°Å³ª, SO_OOBINLINE ¿É¼ÇÀ» °¡´ÉÇÏ°Ô ÇÑ »óÅ ¿¡¼­ MSG_OOB Ç÷¡±×°¡ ¼ÒÄÏ¿¡ ´ëÇؼ­ ¸í½ÃµÇ¾ú½À´Ï´Ù. ¶Ç´Â len ¸Å°³º¯¼ö°¡ 0 À̰ųª 0º¸´Ù ÀÛ½À´Ï´Ù.
WSAEISCONN ¼ÒÄÏÀÌ Á¢¼ÓµÇ¾î ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â Á¢¼Ó ÁöÇâÇü ¼ÒÄÏÀÌ°Ç ºñÁ¢¼Ó ÁöÇâÇü ¼ÒÄÏÀÌ°Ç°£¿¡ Á¢¼ÓµÇ¾î ÀÖ´Â ¼ÒÄÏÀ» Çã¿ë ÇÏÁö ¾Ê½À´Ï´Ù.

(¾Æ!!! Á¤¸» µ¹¾Æ ¹ö¸®°Ú½À´Ï´Ù... ºÐ¸í, À§ÀÇ remark ¿¡¼­´Â "
Á¢¼ÓµÈ ¼ÒÄÏ°ú Á¢¼ÓµÇÁö ¾ÊÀº ¼ÒÄÏ¿¡¼­ ¼ö½ÅµÇ´Â µ¥ÀÌÅ͸¦ ÀÐ°í µ¥ÀÌÅ͸¦ º¸³½°÷ÀÇ ÁÖ¼Ò¸¦ ¾ò¾î³»´Â ÇÔ¼öÀÔ´Ï´Ù." ¶ó°í ¼³¸í ÇØ ³õ°í ÀÌÁ¦¿Í¼­ Çã¿ëÇÏÁö ¾Ê´Â´Ù´Ï... ÀÌ°Ô ¹«½¼ ¸¶¸¥ Çϴÿ¡ ³¯º­¶ô À̶õ ¸»ÀԴϱî... µÈ´Ù´Â ¸»ÀÎÁö ¾È µÈ´Ù´Â ¸»ÀÎÁö ÂǺñ~ ¤Ð¤Ð ¿ø¹®À» ÷°¡ ÇÏ°Ú½À´Ï´Ù. )

The socket is connected. This function is not permitted with a connected socket, whether the socket is connection-oriented or connectionless.
WSAENETRESET T¿¬»êÀÌ ÁøÇàµÇ°í ÀÖ´Â µµÁß Á¢¼ÓÀÌ ²÷°Ü¹ö·È½À´Ï´Ù.
WSAENOTSOCK ±â¼úÀÚ(descriptor)°¡ ¼ÒÄÏÀÌ ¾Æ´Õ´Ï´Ù.
WSAEOPNOTSUPP MSG_OOB °¡ ¸í½ÃµÇ¾úÁö¸¸, ¼ÒÄÏÀº SOCK_STREAM °ú °°Àº ÇüÅÂÀÇ ½ºÆ®¸² ÇüÅ°¡ ¾Æ´Õ´Ï´Ù.
WSAESHUTDOWN ¼ÒÄÏÀÌ ¼Ë´Ù¿î µÇ¾ú½À´Ï´Ù.
WSAEWOULDBLOCK ¼ÒÄÏÀÌ ³Íºí·ÏÅ·(ºñµ¿±â)·Î ¸¶Å·µÇ¾î ÀÖ°í, ¼ö½Å ¿¬»êÀÌ ³»ºÎÀûÀ¸·Î ¾ÆÁ÷ ±â´Ù¸² »óÅÂÀÔ´Ï´Ù.
WSAEMSGSIZE ¼ö½ÅµÈ ¸Þ½ÃÁö°¡ ÁöÁ¤µÈ ¹öÆÛ¿¡ ÀúÀåÇϱ⿡ ³Ê¹« Ä¿¼­ ¼Õ½Ç µÇ¾ú½À´Ï´Ù.
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, recv, send, socket, WSAAsyncSelect, WSAEventSelect