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